标签: database-design

需要一本数据库设计书

我正在设计一个数据库,它在我的表之间有很多关系,我需要一本很好地教授数据库设计的书。我正在寻找一本书,其中广泛涵盖了简单和复杂的表关系,也许书中有案例研究。

database-design

23
推荐指数
4
解决办法
9201
查看次数

有没有什么好的工具可以制作数据库设计和原型?

我想要一个很好的工具来设计包含所有表、列、数据类型和关系的数据库模式。今天我主要用笔和纸来做这件事,但我想用一个好的设计工具来做。

有什么好的(也许是免费的)数据库设计工具吗?

schema tools database-design

23
推荐指数
2
解决办法
3万
查看次数

如何强制一个记录为布尔列的值为真,而所有其他记录为假值?

我想强制一个表中只有一条记录被视为可能访问该表的其他查询或视图的“默认”值。

基本上,我想保证这个查询总是只返回一行:

SELECT ID, Zip 
FROM PostalCodes 
WHERE isDefault=True
Run Code Online (Sandbox Code Playgroud)

我将如何在 SQL 中做到这一点?

mysql database-design

23
推荐指数
2
解决办法
3万
查看次数

何时使用非 dbo 模式与新数据库的决策标准

我主要是一名应用程序开发人员,但发现自己必须为我当前的项目(顺便说一句......它的 MS SQL Server 2008)做所有的前期数据库工作。作为第一个决定,我试图弄清楚是使用单独的数据库还是在同一数据库中使用单独的架构来划分我的状态。我对 SQL Server Schema 进行了一些阅读,这似乎是一种分离对象域(我喜欢)的自然方法,但我不确定这种模式是否存在隐藏成本。

在这两种方法之间进行选择时,我应该考虑哪些更实际的事情?如果我避免dbo.mytable赞成,myschema.mytable我是否会为我的架构带来其他挑战(或问题)?

作为旁注......在某些时候,这将被移交给真正的DBA 来维护/支持,所以我试图确保我不会让他们的生活变得更艰难。

schema sql-server-2008 database-design

23
推荐指数
2
解决办法
2400
查看次数

空列会占用表中的空间吗?

我有一张包含非常基本信息的表格。只是一个标题和几个日期字段。有一个字段叫做comments,它是varchar(4000) 大多数时候我们把它留空,但有时会在这里输入大量数据。这真的是一个糟糕的设计吗?或者这只是有点低效?

我认为为此列创建一个单独的表会更好。

注意:这是 sql server 2008

在此处输入图片说明

sql-server-2008 database-design

23
推荐指数
3
解决办法
2万
查看次数

即用型数据库模型示例

在哪里可以找到现成的数据库模型?

我不需要包含数据的数据库,而只需要模式(UML 图)。也许类似于此链接中数据模型,但要复杂得多和现实世界。

database-design database-recommendation database-theory

23
推荐指数
1
解决办法
2万
查看次数

是否有 DBMS 允许引用视图(而不仅仅是基表)的外键?

受到 Django 建模问题的启发:Database Modeling with multiple many-to-many Relations in Django。db-design 是这样的:

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 NOT NULL
, PRIMARY KEY (BookID, TagID)
, FOREIGN KEY (BookID)  REFERENCES Book (BookID)
, FOREIGN KEY (TagID) …
Run Code Online (Sandbox Code Playgroud)

foreign-key database-design referential-integrity

23
推荐指数
3
解决办法
6889
查看次数

在数据库中存储单位的最佳方式

我继承了一个包含数百个列的大型 (SQLServer) 数据库,这些列代表一件事或另一件事的数量。这些值的单位(例如“加仑”、“英寸”等)存储在扩展属性的 MS_Description 字段中。我想知道是否有更好的方法来存储这些信息。我认为用于文档目的很好,但很难根据这些数据进行可靠的单位换算计算。在这一点上,我不准备进行侵入性更改,但如果我有机会这样做,在这方面推荐的最佳实践是什么?在我的脑海中,选项可能包括:

  • 将列名称更改为包含的单位(例如,“TotalVolumeInGallons”。这会使信息更容易获得,但对我来说仍然很弱。)
  • 添加一个单独的“单位”列以对应每个“金额”列(此列可以是 nvarchar 或者它可以是单独的 Units 表的外键,这可能会使计算单位转换变得更容易。另一方面,添加如此许多列可以使我的数据库的大小翻倍 - 具有非常冗余的数据。)
  • 在专门用于单位的扩展属性中创建一个新字段。(不幸的是,我认为这不能成为 Units 表的外键。)
  • 还有我忽略的另一个想法吗?

更新:阅读@Todd Everett 的回答后,我想到了一个可能的解决方案,所以我将继续回答我自己的问题。(见下文)

database-design sql-server metadata

23
推荐指数
5
解决办法
2万
查看次数

使用 MAX 文本或更具体的较小类型

有人正在审查我用于创建表的 DDL 代码并建议,当他们看到我看到使用VARCHAR(256)文本字段时,我希望它非常小,比如名字或其他什么,我应该总是只使用VARCHAR(MAX)和链接为什么使用 varchar(max )。我读过它,但它似乎过时了,因为它专注于 2005 年,并且似乎没有提供任何真正的理由来在所有文本字段上每行分配最多 2 GB。

从性能、存储等角度来看,应该如何决定是使用VARCHAR(MAX)SQL Server 的现代版本还是使用更小更具体的类型?(例如,2008、2012、2014)

performance database-design sql-server datatypes varchar

23
推荐指数
2
解决办法
1027
查看次数

有没有工具可以检查我的数据库是否规范化为第三范式?

我最近了解了规范化,并了解在实现新模式时它的重要性。

如何检查我的数据库是否符合 2NF 或 3NF?

手动审查是一个确定的选择,但我正在寻找一种自动化工具。

我不是在寻找点击式工具,更多的是强调可能的优化以使表格符合 3NF。我猜它可能会使用基于良好样本数据和/或列名语义分析的统计数据。

schema normalization database-design database-recommendation

22
推荐指数
2
解决办法
4万
查看次数