我正在设计一个数据库,它在我的表之间有很多关系,我需要一本很好地教授数据库设计的书。我正在寻找一本书,其中广泛涵盖了简单和复杂的表关系,也许书中有案例研究。
我想要一个很好的工具来设计包含所有表、列、数据类型和关系的数据库模式。今天我主要用笔和纸来做这件事,但我想用一个好的设计工具来做。
有什么好的(也许是免费的)数据库设计工具吗?
我想强制一个表中只有一条记录被视为可能访问该表的其他查询或视图的“默认”值。
基本上,我想保证这个查询总是只返回一行:
SELECT ID, Zip
FROM PostalCodes
WHERE isDefault=True
Run Code Online (Sandbox Code Playgroud)
我将如何在 SQL 中做到这一点?
我主要是一名应用程序开发人员,但发现自己必须为我当前的项目(顺便说一句......它的 MS SQL Server 2008)做所有的前期数据库工作。作为第一个决定,我试图弄清楚是使用单独的数据库还是在同一数据库中使用单独的架构来划分我的状态。我对 SQL Server Schema 进行了一些阅读,这似乎是一种分离对象域(我喜欢)的自然方法,但我不确定这种模式是否存在隐藏成本。
在这两种方法之间进行选择时,我应该考虑哪些更实际的事情?如果我避免dbo.mytable赞成,myschema.mytable我是否会为我的架构带来其他挑战(或问题)?
作为旁注......在某些时候,这将被移交给真正的DBA 来维护/支持,所以我试图确保我不会让他们的生活变得更艰难。
我有一张包含非常基本信息的表格。只是一个标题和几个日期字段。有一个字段叫做comments,它是varchar(4000) 大多数时候我们把它留空,但有时会在这里输入大量数据。这真的是一个糟糕的设计吗?或者这只是有点低效?
我认为为此列创建一个单独的表会更好。
注意:这是 sql server 2008

受到 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) 我继承了一个包含数百个列的大型 (SQLServer) 数据库,这些列代表一件事或另一件事的数量。这些值的单位(例如“加仑”、“英寸”等)存储在扩展属性的 MS_Description 字段中。我想知道是否有更好的方法来存储这些信息。我认为用于文档目的很好,但很难根据这些数据进行可靠的单位换算计算。在这一点上,我不准备进行侵入性更改,但如果我有机会这样做,在这方面推荐的最佳实践是什么?在我的脑海中,选项可能包括:
更新:阅读@Todd Everett 的回答后,我想到了一个可能的解决方案,所以我将继续回答我自己的问题。(见下文)
有人正在审查我用于创建表的 DDL 代码并建议,当他们看到我看到使用VARCHAR(256)文本字段时,我希望它非常小,比如名字或其他什么,我应该总是只使用VARCHAR(MAX)和链接为什么使用 varchar(max )。我读过它,但它似乎过时了,因为它专注于 2005 年,并且似乎没有提供任何真正的理由来在所有文本字段上每行分配最多 2 GB。
从性能、存储等角度来看,应该如何决定是使用VARCHAR(MAX)SQL Server 的现代版本还是使用更小更具体的类型?(例如,2008、2012、2014)
我最近了解了规范化,并了解在实现新模式时它的重要性。
如何检查我的数据库是否符合 2NF 或 3NF?
手动审查是一个确定的选择,但我正在寻找一种自动化工具。
我不是在寻找点击式工具,更多的是强调可能的优化以使表格符合 3NF。我猜它可能会使用基于良好样本数据和/或列名语义分析的统计数据。
schema normalization database-design database-recommendation
database-design ×10
schema ×3
sql-server ×2
datatypes ×1
foreign-key ×1
metadata ×1
mysql ×1
performance ×1
tools ×1
varchar ×1