在工作中,我们有一个大型数据库,具有唯一索引而不是主键,一切正常.
我正在为一个新项目设计新的数据库,我有一个两难的境地:
在DB理论中,主键是基本元素,没关系,但在REAL项目中,两者的优点和缺点是什么?
你在项目中使用了什么?
编辑: ...那么MS SQL服务器上的主键和复制呢?
我是一名程序员,说实话,不知道世界的街道地址结构,我的国家是如何构建的:)所以哪个是存储街道地址的最佳和常见的数据库设计?它应该是如此简单易用,快速查询和动态存储世界上所有街道地址,只需一个ID识别非常
感谢
所以这更像是一个设计问题.
我有一个主键(比如用户的ID),我有大量与该用户相关的信息.
我应该根据信息将多个表分解为类别,还是应该只有一个包含多列的表?
我以前的方式是拥有多个表,例如,一个表用于应用程序使用数据,一个表用于配置文件信息,一个表用于后端令牌等,以使事情看起来井井有条.
最近有人告诉我,最好不要这样做,并且有一个包含大量列的表是好的.问题是,所有这些列都具有相同的主键.
我对数据库设计很陌生,所以哪种方法更好,哪些是优点和缺点?
这样做的传统方式是什么?
假设您有一个表订单,其中包含客户ID的外键.现在,假设你想添加一个没有客户ID的订单,(这是否可能是另一个问题)你必须使外键为NULL ...这是不好的做法还是你宁愿使用链接表订单和客户?虽然关系是1到n,但是链接表会使n到n.另一方面,通过链接表,我不再拥有那些NULLS ......
数据库中实际上不会有很多NULL,因为具有NULL的外键的记录只是临时的,直到添加了订单的客户.
(在我看来,它不是订单和客户).
编辑:未分配的客户链接到什么?
好像Money类型如所描述的不鼓励这里
我的应用程序需要存储货币,我应该使用哪种数据类型?数字,金钱还是FLOAT?
我正在开发一个带有相当大的Oracle数据库的项目(尽管我的问题同样适用于其他数据库).我们有一个Web界面,允许用户搜索几乎任何可能的字段组合.
为了使这些搜索更快,我们将索引添加到我们认为用户通常会搜索的字段和字段组合.但是,由于我们并不真正了解客户将如何使用此软件,因此很难确定要创建哪些索引.
空间不是一个问题; 我们有一个4 TB的RAID驱动器,我们只使用了一小部分.但是,我担心索引太多会导致性能损失.因为每次添加,删除或修改行时都需要更新这些索引,我想在单个表上有几十个索引是个坏主意.
那么有多少指数被认为太多了?10?25?50?或者我应该只是覆盖真正的,非常常见和明显的案例而忽略其他一切?
我不认为我是唯一一个对此感到疑惑的人.您通常对数据库行为进行什么练习?您是否希望从数据库中删除记录?或者,仅使用"已删除"标志或布尔列标记记录以表示记录处于活动还是非活动状态更好?
我需要创建一个数据库表来存储不同的更改日志/审核(当添加,删除,修改等内容时).我不需要存储特别详细的信息,所以我想的是:
我在这里错过了什么吗?显然我可以继续改进设计,虽然我不打算让它变得复杂(为事件类型创建其他表格或类似的东西是不可能的,因为它是我需要的复杂因素).
有一个只有一列的表可以吗?我知道这在技术上并不违法,但它被认为是糟糕的设计吗?
编辑:
这里有一些例子:
有人提到添加一个关键字段.我看到它的方式,这个单列将成为主键.
为什么数据库人员继续关于规范化?
它是什么?它有什么用?
它适用于数据库之外的任何内容吗?
database-design ×10
database ×4
sql ×4
audit ×1
mysql ×1
oracle ×1
postal-code ×1
postgresql ×1
relational ×1