真正的关系数据库必须超越将数据扔到几个表中并编写一些SQL语句来提取数据的能力。
最好的一个错误设计的表结构将减慢查询的执行速度,并可能使数据库无法按预期运行。
一个数据库表不应被视为另一个表。它必须遵循一组规则才能被认为是真正的关系。从学术上讲,区分是一种“关系”。
关系表的五个规则是:
每个值是原子的; 每行每个字段中的值必须是一个值。
每个字段都包含相同数据类型的值。
每个字段标题都有一个唯一的名称。
表中的每一行必须至少具有一个值,以使其在表中的其他记录中唯一。
行和列的顺序没有意义。
符合以下五个规则的表:
ID | 名称 | DOB | 经理 |
---|---|---|---|
1 | 弗雷德 | 1971年11月2日 | 3 |
2 | 弗雷德 | 1971年11月2日 | 3 |
3 | 起诉 | 1975年8月7日 | 2 |
规则1:每个值都是原子的。 Id,Name,DOB和Manager仅含有一个单一的值。
规则2:Id仅包含整数,Name包含文本(我们可以添加为四个字符或更少的文本),DOB包含有效类型的日期,并Manager包含整数(我们可以添加对应于管理器表中主键字段的数字)。
第3条:Id,Name,DOB和Manager在表格内唯一的标题名称。
规则4:包含该Id字段可确保每个记录与表中的任何其他记录都不同。
设计不良的表格:
ID | 名称 | DOB | 名称 |
---|---|---|---|
1 | 弗雷德 | 1971年11月2日 | 3 |
1 | 弗雷德 | 1971年11月2日 | 3 |
3 | 起诉 | 1975年7月18日,星期五 | 2、1 |
规则1:第二个名称字段包含两个值-2和1。
规则2:DOB字段包含日期和文本。
规则3:有两个字段称为“名称”。
规则4:第一条记录和第二条记录完全相同。
规则5:这条规则没有违反。
我正在创建一个UDP服务器,它需要从各种客户端接收UDP数据包,然后将它们转发给其他客户端。我使用C#,所以每个UDP套接字对我来说都是一个Udp客户端。我想我想要2个Udp客户端对象,一个用于接收,一个用于发送。接收套接字将绑定到已知端口,发送者根本不会绑定。 服务器将获取每个数据包,查找数据包数据中的用户名,然后根据服务器维护的路由列表,将数据包转发给1个或多个其他客户端。 我开始监听Udp客
问题内容: 关闭。 此问题不符合堆栈溢出准则。它当前不接受答案。 想要改善这个问题吗? 更新问题,使它成为Stack Overflow的主题。 2年前关闭。 改善这个问题 我正在寻找有关关系数据库设计,性能调整等最佳实践的书/站点/教程。有很多“这里是归一化,这是ER图,”,但在实际示例中却没有太多。有人有想法么? 问题答案: 图书:仅凡人的数据库设计
我正面临着一个问题,即设计能够执行网络I/O的方法(用于可重用库)。我读过这个问题 API设计中C#5Await/Async模式 以及其他与我的问题更接近的问题。 所以,问题是,如果我想同时提供异步和非异步方法,我必须如何设计这些? 例如,要公开方法的非异步版本,我需要执行如下操作 我觉得这不是个好设计。我想要一个关于如何定义私有方法的建议(例如),这些私有方法可以包装在公共方法中以提供两个版本。
我正在开发一个内置的应用程序。NET和Java。Java组件包含使用Redhat BRMS套件的完整规则库。这个NET客户端(UI和基于桌面的应用程序)将咨询Java规则引擎并发送/接收JSON数据。已经做出的决定是将规则引擎(使用Drools的Redhat BRMS 6.0.0)公开为基于REST的API。我提出了以下设计方法: 在Spring框架和服务类中编写一个REST控制器,用于调用BRM
问题内容: 缩进SQL语句的公认做法是什么?例如,考虑以下SQL语句: 应该如何缩进?非常感谢。 问题答案: 我喜欢将所有的“,”放在前面,这样,当SQL编辑器在X行出现错误时,我就永远不会搜索它们。 对于那些不使用这种类型的编写SQL语句的人来说,这是一个示例。两者都包含缺少逗号的错误。 在第一个示例中,我发现更容易,更快捷。希望本示例向您展示更多我的观点。
问题内容: 有一个只有一列的表可以吗?我知道从技术上来讲这不是非法的,但是它被认为是糟糕的设计吗? 编辑: 这里有一些例子: 您有一个带有50个有效美国州代码的表,但是您无需存储详细的州名。 电子邮件黑名单。 有人提到添加一个关键字段。以我的看法,这单列将是主键。 问题答案: 是的,以使表格效率最高的方式设计表格无疑是一个很好的设计。“不良RDBMS设计”通常以低效率为中心。 但是,我发现大多数单