标签: database-design

主键还是唯一索引?

在工作中,我们有一个大型数据库,具有唯一索引而不是主键,一切正常.

我正在为一个新项目设计新的数据库,我有一个两难的境地:

在DB理论中,主键是基本元素,没关系,但在REAL项目中,两者的优点和缺点是什么?

你在项目中使用了什么?

编辑: ...那么MS SQL服务器上的主键和复制呢?

sql database database-design

120
推荐指数
4
解决办法
14万
查看次数

世界上所有地址都有共同的街道地址数据库设计吗?

我是一名程序员,说实话,不知道世界的街道地址结构,我的国家是如何构建的:)所以哪个是存储街道地址的最佳和常见的数据库设计?它应该是如此简单易用,快速查询和动态存储世界上所有街道地址,只需一个ID识别非常
感谢

sql database-design postal-code street-address

116
推荐指数
6
解决办法
7万
查看次数

MySQL:多个表还是一个包含许多列的表?

所以这更像是一个设计问题.

我有一个主键(比如用户的ID),我有大量与该用户相关的信息.

我应该根据信息将多个表分解为类别,还是应该只有一个包含多列的表?

我以前的方式是拥有多个表,例如,一个表用于应用程序使用数据,一个表用于配置文件信息,一个表用于后端令牌等,以使事情看起来井井有条.

最近有人告诉我,最好不要这样做,并且有一个包含大量列的表是好的.问题是,所有这些列都具有相同的主键.

我对数据库设计很陌生,所以哪种方法更好,哪些是优点和缺点?

这样做的传统方式是什么?

mysql database-design

113
推荐指数
4
解决办法
8万
查看次数

可空的外键坏习惯?

假设您有一个表订单,其中包含客户ID的外键.现在,假设你想添加一个没有客户ID的订单,(这是否可能是另一个问题)你必须使外键为NULL ...这是不好的做法还是你宁愿使用链接表订单和客户?虽然关系是1到n,但是链接表会使n到n.另一方面,通过链接表,我不再拥有那些NULLS ......

数据库中实际上不会有很多NULL,因为具有NULL的外键的记录只是临时的,直到添加了订单的客户.

(在我看来,它不是订单和客户).

编辑:未分配的客户链接到什么?

database-design

111
推荐指数
5
解决办法
7万
查看次数

PostgreSQL:哪种数据类型应该用于货币?

好像Money类型如所描述的不鼓励这里

我的应用程序需要存储货币,我应该使用哪种数据类型?数字,金钱还是FLOAT?

sql postgresql database-design

110
推荐指数
6
解决办法
7万
查看次数

有多少数据库索引太多了?

我正在开发一个带有相当大的Oracle数据库的项目(尽管我的问题同样适用于其他数据库).我们有一个Web界面,允许用户搜索几乎任何可能的字段组合.

为了使这些搜索更快,我们将索引添加到我们认为用户通常会搜索的字段和字段组合.但是,由于我们并不真正了解客户将如何使用此软件,因此很难确定要创建哪些索引.

空间不是一个问题; 我们有一个4 TB的RAID驱动器,我们只使用了一小部分.但是,我担心索引太多会导致性能损失.因为每次添加,删除或修改行时都需要更新这些索引,我想在单个表上有几十个索引是个坏主意.

那么有多少指数被认为太多了?10?25?50?或者我应该只是覆盖真正的,非常常见和明显的案例而忽略其他一切?

database oracle database-design

108
推荐指数
7
解决办法
4万
查看次数

数据库:删除或不删除记录

我不认为我是唯一一个对此感到疑惑的人.您通常对数据库行为进行什么练习?您是否希望从数据库中删除记录?或者,仅使用"已删除"标志或布尔列标记记录以表示记录处于活动还是非活动状态更好?

database database-design

107
推荐指数
6
解决办法
3万
查看次数

更改日志/审计数据库表的最佳设计?

我需要创建一个数据库表来存储不同的更改日志/审核(当添加,删除,修改等内容时).我不需要存储特别详细的信息,所以我想的是:

  • id(用于活动)
  • 触发它的用户
  • 事件名称
  • 事件描述
  • 事件的时间戳

我在这里错过了什么吗?显然我可以继续改进设计,虽然我不打算让它变得复杂(为事件类型创建其他表格或类似的东西是不可能的,因为它是我需要的复杂因素).

database audit database-design

105
推荐指数
6
解决办法
9万
查看次数

一列表是好的设计吗?

有一个只有一列的表可以吗?我知道这在技术上并不违法,但它被认为是糟糕的设计吗?

编辑:

这里有一些例子:

  • 您有一个包含50个有效美国州代码的表,但您无需存储详细的州名.
  • 电子邮件黑名单.

有人提到添加一个关键字段.我看到它的方式,这个单列将成为主键.

sql database-design

105
推荐指数
8
解决办法
3万
查看次数

什么是规范化(或规范化)?

为什么数据库人员继续关于规范化?

它是什么?它有什么用?

它适用于数据库之外的任何内容吗?

database-design relational normalization

102
推荐指数
5
解决办法
6万
查看次数