Questions tagged «database-design»

数据库设计是指定数据库的结构以及逻辑方面的过程。数据库设计的目的是代表某种“话语世界”-事实的类型,业务规则和数据库要建模的其他要求。

8
在数据库中存储性别(性别)
我想以尽可能少的(大小/性能)成本将用户的性别存储在数据库中。 到目前为止,我想到了3种情况 INT - 在代码与枚举对齐(1 =男,2 =女性,3 = ...) char(1) - 存储m,f或另一个单个字符标识符 位 (布尔值) - 此选项是否有适当的字段名称? 我想问的原因是因为这个的答案,其提到字符是小比布尔值。 我要澄清,我使用MS SQL 2008,它DOES其实有位数据类型。

4
如何创建具有共享表结构的多租户数据库?
我们的软件当前在MySQL上运行。所有租户的数据都存储在同一架构中。由于我们使用的是Ruby on Rails,因此我们可以轻松确定哪些数据属于哪个租户。但是,当然有些公司担心其数据可能会遭到破坏,因此我们正在评估其他解决方案。 到目前为止,我已经看到了三种选择: 多数据库(每个租户都有自己的-每个客户几乎与1台服务器相同) 多模式(在MySQL中不可用,每个租户都在共享数据库中获得自己的模式) 共享模式(我们当前的方法,可能在每列上都有其他标识记录) 我最喜欢Multi-Schema(考虑到成本)。但是,创建一个新帐户并进行迁移似乎很痛苦,因为我将不得不遍历所有模式并更改其表/列/定义。 问: Multi-Schema似乎被设计为每个租户都有略微不同的表-我不想要这个。是否有任何RDBMS允许我使用多模式多租户解决方案,其中所有租户之间共享表结构? PS多重代表我的意思是超级多重(10.000+个租户)。

11
调查的数据库设计[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 改善这个问题 我需要创建一个调查,将答案存储在数据库中。我只是想知道什么是在数据库中实现此目的的最佳方法,特别是所需的表。调查包含不同类型的问题。例如:用于注释的文本字段,多项选择题以及可能包含多个答案的问题(即,选中所有适用的答案)。 我提出了两种可能的解决方案: 创建一个巨大的表,其中包含每个调查提交的答案。每列将对应于调查的答案。即SurveyID,Answer1,Answer2,Answer3 我不认为这是最好的方法,因为此调查中存在很多问题,并且如果要更改该调查似乎不太灵活。 我想到的另一件事是创建问题表和答案表。问题表将包含调查的所有问题。答案表将包含调查中的单个答案,每一行都链接到一个问题。 一个简单的例子: tblSurvey:SurveyID tblQuestion:QuestionID,SurveyID,QuestionType,问题 tblAnswer:AnswerID,UserID,QuestionID,Answer tblUser:用户ID,用户名 我的问题是答案可能很多,这会使答案表非常庞大。我不确定性能方面是否如此出色。 我将不胜感激任何想法和建议。


15
主键还是唯一索引?
在工作中,我们有一个具有唯一索引而不是主键的大型数据库,并且一切正常。 我正在为一个新项目设计新的数据库,但有一个难题: 在数据库理论中,主键是基本元素,没关系,但是在REAL项目中,两者的优点和缺点是什么? 您在项目中使用什么? 编辑: ...以及MS SQL服务器上的主键和复制呢?

7
SQL数据库设计初学者指南[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 5年前关闭。 改善这个问题 您知道学习如何设计SQL解决方案的好资源吗? 除了基本的语言语法,我还在寻找可以帮助我理解的东西: 要构建什么表以及如何链接它们 如何设计不同的规模(从小型客户端APP到庞大的分布式网站) 如何编写有效/高效/优雅的SQL查询

2
PostgreSQL表太大了?
我正在为我的公司进行RoR项目的设计,而我们的开发团队已经对设计(尤其是数据库)进行了一些辩论。 我们有一个Message需要持久化的模型。这是一个非常小的模型,除了id之外只有三个db列,但是当我们投入生产时,可能会有很多这样的模型。我们每天要查询多达1,000,000次插入。只能通过可索引的两个外键来搜索模型。同样,不必删除模型,但是一旦它们使用了大约三个月,我们也不必保留它们。 因此,我们想知道的是,在Postgres中实现此表是否会带来严重的性能问题?有没有人有使用大型SQL数据库的经验来告诉我们这是否会成为问题?如果是这样,我们应该选择哪种选择?

16
用于修订的数据库设计?
我们在项目中需要将实体的所有修订(更改历史记录)存储在数据库中。目前,我们有2个为此设计的提案: 例如,对于“雇员”实体 设计1: -- Holds Employee Entity "Employees (EmployeeId, FirstName, LastName, DepartmentId, .., ..)" -- Holds the Employee Revisions in Xml. The RevisionXML will contain -- all data of that particular EmployeeId "EmployeeHistories (EmployeeId, DateModified, RevisionXML)" 设计2: -- Holds Employee Entity "Employees (EmployeeId, FirstName, LastName, DepartmentId, .., ..)" -- In …

3
唯一约束,允许在MySQL中使用空值
我有一个存储产品代码的字段。该代码是唯一的,但是某些产品根本没有代码。我无法发明代码,因为它们是提供商代码。 在MySQL中这种约束可能吗? 我是一个存储过程和触发器的菜鸟,所以如果解决方案涉及其中之一,请耐心等待。 更新:列不为空。这就是为什么我无法做到这一点。

8
MySQL:多个表还是一个包含许多列的表?
因此,这更多是一个设计问题。 我有一个主键(例如用户的ID),并且有大量与该用户相关联的信息。 我应该根据信息将多个表细分为几类,还是只有一个表包含许多列? 我过去这样做的方法是有多个表,例如,一个表用于应用程序使用情况数据,一个表用于配置文件信息,一个表用于后端令牌,等等,以使事情看起来井井有条。 最近有人告诉我,最好不要那样做,有一个包含很多列的表也可以。关键是,所有这些列都具有相同的主键。 我是数据库设计的新手,所以哪种方法更好,优缺点是什么? 常规的做法是什么?


8
数据库:删除还是不删除记录
我不认为我是唯一对此感到好奇的人。您通常会如何处理数据库行为?您是否更愿意从数据库中删除记录?还是只用“已删除”标志或布尔列标记记录以表示记录是活动的还是不活动的更好?

13
如何在数据库表的列中存储列表
因此,按照Mehrdad对一个相关问题的回答,我得到一个“适当的”数据库表列不存储列表的信息。相反,您应该创建另一个表,该表可以有效地保存所述列表的元素,然后直接或通过联结表链接到该列表。但是,我要创建的列表类型将由唯一项组成(与链接问题的成果不同)例)。此外,列表中的项目已明确排序-这意味着如果将元素存储在另一个表中,则每次访问它们时都必须对它们进行排序。最后,该列表基本上是原子性的,因为无论何时我想访问该列表,我都想访问整个列表,而不只是其中的一部分-因此,必须发出数据库查询以将各个部分汇总在一起似乎很愚蠢。名单。 AKX的解决方案(在上面链接)是序列化列表并将其存储在二进制列中。但这似乎也不方便,因为这意味着我必须担心序列化和反序列化。 有没有更好的解决方案?如果是没有更好的解决办法,那么为什么呢?似乎这个问题应该不时出现。 ...只是更多信息,让您知道我来自哪里。我刚开始大致了解SQL和数据库后,便开始使用LINQ to SQL,所以现在我有点被宠坏了,因为我希望处理我的编程对象模型而不必考虑对象的方式被查询或存储在数据库中。 谢谢大家! 约翰 更新:所以在得到的第一批答案中,我看到“您可以使用CSV / XML路线...但是不要!”。所以现在我正在寻找原因的解释。为我提供一些很好的参考。 另外,为了让您更好地了解自己的工作情况:在数据库中,我有一个功能表,该表将具有(x,y)对的列表。(该表还将包含其他信息,这些信息对我们的讨论没有影响。)我将永远不需要看到(x,y)对列表的一部分。而是,我将所有这些都放置在屏幕上。我将允许用户拖动节点以偶尔更改值或向图中添加更多值。

11
可空的外键不好的做法?
假设您有一个带有客户ID外键的订单表。现在,假设您要添加一个没有客户ID的订单,(是否应该是另一个问题),您将必须使外键为NULL ...是一种不好的做法,还是宁愿使用之间的链接表订单和客户?尽管关系为1到n,但链接表会将其设为n到n。另一方面,有了链接表,我不再有那些NULL了... 实际上,数据库中不会有很多NULL,因为带有外键NULL的记录只是暂时的,直到添加订单的客户为止。 (在我的情况下,它不是订单和客户)。 编辑:链接到未分配的客户呢?

8
变更日志/审核数据库表的最佳设计?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 改善这个问题 我需要创建一个数据库表来存储不同的更改日志/审核(添加,删除,修改等内容时)。我不需要存储特别详细的信息,因此我在考虑以下方面: id(用于事件) 触发它的用户 活动名称 事件描述 事件的时间戳 我在这里想念什么吗?显然,我可以继续改进设计,尽管我不打算使其变得复杂(为事件类型或诸如此类的东西创建其他表是不可能的,因为这对我来说很复杂)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.