Questions tagged «database-design»

数据库的概念模式和/或逻辑模型和/或物理设置的开发。


4
两次录入簿记数据库设计
我正在创建会计软件。我需要强制两次记账。我有一个经典的问题,即每笔交易要排两行。 让我们举个例子,看看在两种情况下如何实现它。 考虑帐户Cash和帐户Rent。当我支付月租金时,我将$ 100从我的Cash帐户转入我的Rent帐户。 每笔交易一行 在单行系统中,此类交易将存储为: 交易 tx_id | posting_date 1 | 23/05/2015 transaction_records id | tx_id | credit_account | debit_account | amount 1 | 1 | Cash | Rent | 100.00 每笔交易两行 在两行系统中,我必须镜像相同的事务记录以创建相反的记录,一旦我将两者都加起来,就会得到零余额。 交易 tx_id | posting_date 1 | 23/05/2015 transaction_records id | tx_id | type | account | …

6
需要一本数据库设计书[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为数据库管理员Stack Exchange 的主题。 去年关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我正在设计一个数据库,并且我的表之间有这么多的关系,我需要一本非常好的数据库设计知识书。

2
使用MAX文字或更具体的小字体
有人正在查看我的DDL代码以创建表,并提出了建议,当他们看到我看到使用VARCHAR(256)文本字段时,我希望它很小,例如名字或其他名称,我应该始终使用VARCHAR(MAX)并链接为什么使用varchar(max )。我读了它,但它似乎过时了,因为它专注于2005年,并且似乎没有提供任何真正的理由在所有文本字段上每行可能分配多达2 GB的空间。 从性能,存储等方面来看,应该如何决定是否VARCHAR(MAX)对现代版本的SQL Server 使用或更小的更具体的类型?(例如,2008、2012、2014)

3
如何与有特权的孩子建立一对多关系?
我想建立一对多关系,其中对于每个父母,一个或零个孩子被标记为“收藏夹”。但是,并不是每个父母都会有一个孩子。(例如,将父母视为本网站上的问题,将孩子视为答案,将喜欢的事物作为接受的答案。)例如, TableA Id INT PRIMARY KEY TableB Id INT PRIMARY KEY Parent INT NOT NULL FOREIGN KEY REFERENCES TableA.Id 我看到的方式可以将以下列添加到TableA中: FavoriteChild INT NULL FOREIGN KEY REFERENCES TableB.Id 或TableB的以下列: IsFavorite BIT NOT NULL 第一种方法的问题在于它引入了可为空的外键,据我所知,它不是标准化形式。第二种方法的问题是,需要做更多的工作以确保最多一个孩子是最爱的。 我应该使用哪种标准来确定使用哪种方法?或者,还有其他我没有考虑的方法吗? 我正在使用SQL Server 2012。

3
如何为国际数据库选择排序规则?
我正在设计一个数据库,该数据库将以不同的语言存储数据(使用UTF-8),所以我认为显示查询结果的最佳方法是在查询过程中根据用户的语言对其进行排序(因为不止一种正确的方法),如下所示: SELECT a < b COLLATE "de_DE" FROM test1; 假设这是处理国际数据的正确方法,这是数据库本身的最佳整理方法?PostgreSQL文档说: C和POSIX归类均指定“传统C”行为,其中仅将ASCII字母“ A”至“ Z”视为字母,并且严格按字符代码字节值进行排序。 我认为这是这种情况下的最佳选择,还是我错了? (奖金问题:在查询本身中选择排序规则是否太慢?)。

2
关于何时使用非DBO模式与新数据库的决策标准
我主要是一名应用程序开发人员,但发现自己必须为当前项目(顺便说一下... MS SQL Server 2008)做所有的前期数据库工作。作为第一个决定,我试图确定是使用单独的数据库还是在同一数据库中使用单独的架构划分状态。我已经阅读了一些有关SQL Server Schema的文章,这似乎是分离对象域的一种自然方法(我喜欢),但是我不确定这种模式是否存在隐性成本。 在这两种方法之间进行选择时,我应该考虑哪些更实际的事情?如果我避免dbo.mytable赞成,myschema.mytable会为我的体系结构带来其他挑战(或问题)吗? 附带说明。。。在某些时候,这将移交给真正的 DBA进行维护/支持,因此,我试图确保自己的生活不会更加艰难。

5
是否有DBMS允许外键引用视图(而不仅仅是基表)?
受到Django建模问题的启发:Django中具有多个多对多关系的数据库建模。数据库设计类似于: CREATE TABLE Book ( BookID INT NOT NULL , BookTitle VARCHAR(200) NOT NULL , PRIMARY KEY (BookID) ) ; CREATE TABLE Tag ( TagID INT NOT NULL , TagName VARCHAR(50) NOT NULL , PRIMARY KEY (TagID) ) ; CREATE TABLE BookTag ( BookID INT NOT NULL , TagID INT …

8
教授告诉我们将序列化的Java对象存储为Blob,而不是定义关系表
我的教授告诉我们我们可以将对象映射到ID,而不是实际定义具有正确属性的表: id (int) | Serialized Object (blob) 1 10010110110 我可以看到很多问题。数据冗余,必须分别跟踪ID,必须将整个表放入内存中以搜索任何内容,并且**如果要更改Java代码中的模型,我将不再能够反序列化存储在数据库放入该模型。 我要么永远呆在那个模型上,要么我不得不做一些其他非常丑陋的事情来更改我的模型。**这一切对我来说似乎是不好的形式。我不同意我的教授吗?这样做有没有想到的好处?如果我是正确的话,我应该对我的教授说些什么吗?他正在向全班讲道,甚至说他以这种方式建立了项目。第二个意见将是伟大的。 该课程名为软件设计。 我的教授没有说这是最好的方法,但他确实说这是定义关系表的合理选择。 该模型绝不是动态的。


5
在数据库中存储单位的最佳方法
我继承了一个大型(SQLServer)数据库,其中包含数百个列,这些列代表一件事或另一件事的数量。这些值的单位(例如“加仑”,“英寸”等)存储在扩展属性的MS_Description字段中。我想知道是否有更好的方法来存储此信息。我认为这对于文档目的来说是很好的,但是很难基于此数据进行可靠的单位转换计算。目前,我还没有准备好进行侵入性更改,但是如果有机会,我在这方面建议的最佳实践是什么?在我头顶上方的选项可能包括: 将列名称更改为包含的单位(例如,“ TotalVolumeInGallons”。这将使该信息更容易获得,但对我而言似乎仍然很薄弱。) 添加一个单独的“单位”列以对应于每个“金额”列(此列可以是nvarchar,也可以是一个单独的“单位”表的外键,这可能使计算单位转换更加容易。许多列可以使我的数据库大小增加一倍-拥有非常冗余的数据。) 在扩展属性中专门为单位创建一个新字段。(不幸的是,我认为这不是Units表的外键。) 我还有其他想法要忽略吗? 更新:阅读@Todd Everett的答案后,我想到了一个可能的解决方案,所以我将继续回答自己的问题。(见下文)

6
有什么好的工具可以进行数据库设计和原型设计?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为数据库管理员Stack Exchange 的主题。 5年前关闭。 我希望有一个很好的工具来设计具有所有表,列,数据类型和关系的数据库架构。今天,我主要使用笔和纸来完成此操作,但我想使用一个好的设计工具来完成此操作。 有没有好的(也许免费的)数据库设计工具?

1
CAP定理背后的原因是什么?
http://en.wikipedia.org/wiki/CAP_theorem http://www.cs.berkeley.edu/~brewer/cs262b-2004/PODC-keynote.pdf 我想是不是非常简单,为什么只有两个的 一致性 可用性 分区容限 可以容纳任何给定的分布式数据库系统。这个猜想被证实,但有没有看出为什么一个简单的方法可能是,这可能持有? 我不是在寻找证明,而是一种理解为什么该定理可能有意义的好方法。这是什么原因?

12
为什么在数据库而不是代码中应用约束?
为什么在数据库中应用约束?将其放入代码中是否会更加灵活? 我正在阅读有关实现数据库的初学者书籍,所以我想作为初学者阅读。假设我已经设计了一个数据库,其中包括以下实体模型: entity type | sub-types ----------------+-------------------------------------------- Person | Employee, Student, ... Student | Graduate, Undergraduate, ... Employee | Teacher, Administrator, ... 当前限制: 系统上的注册人只能是学生或雇员。 人物实体需要社会号码的唯一性,我们假定每个人仅拥有一个唯一的唯一号码(又称足够好的主键)。(请参阅#1) 后来我们决定删除数字1:如果大学决定某天Teacher(Employee子类型)也可以Student在空闲时间上课,那么更改数据库设计就变得更加困难,因为数据库设计可能有成千上万,数百万,数十亿,成千上万的条目,而不仅仅是改变代码的逻辑:只是不允许某人同时注册为学生和雇员的部分。 (这是非常不可能的,但我现在想不出其他任何东西。 显然有可能)。 为什么我们在数据库设计而不是代码中关心业务规则? #1:7年后的便笺,一个真实的例子: 我见过一个政府,由于错误,已发行的SSN重复了:多个人,同一个SSN。设计原始DB的人肯定犯了没有在数据库中应用这种唯一性约束的错误。(以及后来的原始应用程序中的错误?使用共享数据库的多个应用程序,并且不同意放置,检查和实施约束的位置?...)。 该错误将继续存在于系统中,并且在以后的许多年中,所有开发的系统都将依赖该原始系统的数据库。在这里阅读答案,我学会了在数据库中明智(而不是盲目地)应用所有约束(尽可能多地约束),以尽我所能代表真实的物理世界。

3
varchar(255)还是varchar(256)?
我应该使用表格varchar(255)还是varchar(256)设计表格?我听说一个字节用于列的长度或存储元数据。 现在重要吗? 我在互联网上看到了一些帖子,但是它们适用于Oracle和MySQL。 我们拥有Microsoft SQL Server 2016企业版,它如何应用于此环境? 现在说,例如,如果我告诉客户保留文本描述为255个字符而不是256个字符,会有什么区别吗?我读到的内容“最大长度为255个字符的DBMS可以选择使用单个字节来指示字段中数据的长度。如果限制为256或更大,则将需要两个字节。” 这是真的?

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.