标签: database-design

对特定配对的唯一约束

我试图找出一个特殊的UNIQUE约束:表中有很多列Users,但只有这两列与问题相关:

id bigint,
active boolean,
...
Run Code Online (Sandbox Code Playgroud)

我想允许多行具有相同的id-其中只有一行可能具有active = true.

例如,可以有很多行包含id = 1active = false,但只有一行可以包含id = 1active = true

postgresql database-design unique-constraint

0
推荐指数
1
解决办法
999
查看次数

SQL 上的强实体类型与弱实体类型

我有一个 3NF 规范化数据库设计,并试图理解强实体类型与弱实体类型的概念,我的理解是弱实体类型是没有主键的表。但是,所有表都应该有一个主键,从而使它们成为一个强大的实体吗?那么我所有的表都是强实体吗?或者我错过了什么?

重新思考,我的连接表有复合键,(在 maria db 中也制作了一个复合键,您执行 PRIMARY KEY(column1, column2)),那么这些类会作为弱实体吗?

数据库设计: 在此输入图像描述

mysql mariadb normalization database-design table

0
推荐指数
1
解决办法
2561
查看次数

多个子表

我想知道制作带有多个孩子的父表的最佳解决方案是什么?

我必须制作多个儿童表。每个配置文件一个。

有没有比在父表中有 3 个外键更好的主意?

foreign-key database-design

-1
推荐指数
1
解决办法
2690
查看次数

我应该为每位员工单独创建一张表还是为所有人创建一张表?

我想弄清楚如何设置数据库结构。

有~10000个员工。会有一张表来存储员工的基本信息,还有一张表来存储员工的交易,所以我决定为所有员工创建单独的表来记录他们的交易,这意味着~10000表。

所以我的问题是,创建那么多表(~10000)或您可以建议的任何其他方法是否有效,我将在 LAN 中使用 MySQL 作为数据库和 Java 客户端。

mysql database-design

-1
推荐指数
1
解决办法
641
查看次数

如何构建我的数据库以存储页面视图?

当用户查看页面时,我想在页面视图的数据库表中添加一个新行。

这可以通过增加页面表中某个页面的查看次数来轻松完成。

但是,我想对点击垃圾邮件发送者有更多的控制;D。我的意思是,我想在我的表中添加一个名为例如page_views_all的新行,前提是没有具有相同 IP 的先前记录或相同 page_id 的先前记录的时间且相同 IP 不少于 5 分钟。因此,相同的文章视图只能每 5 分钟添加一次,如果具有相同 IP 的用户多次点击相同的文章(例如查看新评论和刷新页面),那么这不算为点击,也不是作为新行添加到数据库中。

我正在考虑创建 3 个表,我想听听您对我的想法有何看法,以及我该如何改进。

所以,我想要3张桌子:

1)page_views_all(用于存储每个page_view;除了我上面所说的每5分钟限制相同的IP)

2) page_views_grouped_by_page_id (CRON 将每 30 或 60 分钟运行一个脚本来检查 page_views_all 表,并按 id 将所有行分组并计算它们并存储每个页面 id 的页面浏览量;这样我们可以多次减少表大小,因为我们不只将用户计入页面)

3) page_views_by_day一个简单的表,每天只有一条记录(每天午夜通过 CRON 运行;将对这一天的所有页面浏览量和唯一访问者数量等进行排序;预计一年只有 365 条记录)

也许是第 4 个表 ;) page_views_domain(再次通过 cron 并存储从网站开始的所有时间的 page_views 总量。

您如何看待这种方法?MySQL有没有更简单的解决方案?重要的是我想保存访问者的 IP、用户代理、访问时间、page_id,也许还有 previous_page_id(referrer)。我正在使用 Disqus 并且我的系统中没有登录用户,因此在我的情况下不会存储 user_id,只是 IP 地址。

如此多的用于存储 page_views 的表背后的理念是,我希望网站速度更快,并通过表 2 (page_views_grouped_by_page_id) 或表 3 (page_views_by_day) 而不是来自大表 1 的结果为用户提供服务,我可以加快网站速度有点,至少我是这么认为的。

我不确定的一件事是,如果通过 CRON 对盯着每个 page_view 的第一个也是最大的表进行查询不会减慢网站的速度?如果我会这样做,例如每 …

database-design

-1
推荐指数
1
解决办法
6295
查看次数

一个大型数据库与几个较小的数据库

我们目前有一个用于报告的大型数据库。这包含多个表,其中只有一些是相关的。

例如,我们有一个部门的 5 个表,另一个部门的 2 个表,等等。数据可以在部门之间流动,但表之间没有结构链接——没有外键关系,没有重复的表。我们还有一些查找表,这些表由填充每个部门中的大量表的过程使用 - 日历、邮政编码,诸如此类。

这是作为单个大型数据库的最佳选择,还是分离为具有主题链接表的较小数据库?这些表会增加,并且随着新部门的建立,它们的数量也会增加。随着时间的推移,我们会注意到任何退化,还是小到微不足道?

任何有关阅读内容的建议或指示都非常感谢。

database-design sql-server

-1
推荐指数
1
解决办法
581
查看次数

多对多 - 概念

我知道有很多关于多对多关系的问题,但似乎没有一个对我有用,因为它更多地是关于概念而不是代码的问题。所以我需要澄清一下如何实现我的想法。

我正在尝试制作乐高数据库。我有可以有很多小人仔的套装。某些 MINIFIGURES 也可以出现在许多 SETS 中。我是这样做的,在 Excel(csv) 文件中。它是 SETS “表”。

Id  Set_Name                        Set_Id   Minifigures_List
1   Spider-Man's Doc Ock Ambush     6873     Doc Ock, Spider-Man, Iron Fist
2   Spider-Man: Spider-Cycle Chase  76004    Spider-Man, Venom, Nick Fury
3   Electro                         5002125  Electro
.....
Run Code Online (Sandbox Code Playgroud)

我的数据库实现的第一步是创建一个SETS表。

CREATE TABLE Sets (
ID int NOT NULL AUTO_INCREMENT,
Set_Name varchar(255),
Set_Id varchar(255),
);
Run Code Online (Sandbox Code Playgroud)

然后插入数据:

Insert into Sets (Set_Name, Set_Id)
VALUES ('Spidermans Doc Ock Ambush' , '6837'), 
('Spider-Man: Spider-Cycle Chase' , '76004')
('Electro', '5002125')
;
...
Run Code Online (Sandbox Code Playgroud)

下一步是创建一个MINIFIGS …

schema database-design many-to-many

-1
推荐指数
1
解决办法
179
查看次数

关于选择主键的问题

我的场景是我有一个名为 PERSON 的超类型和两个子类型 EMPLOYEE 和 CUSTOMER。我在 EMPLOYEE 和 CUSTOMER 中使用来自 PERSON、PersonID 的主键作为外键。但是,我没有将它用作 EMPLOYEE 和 CUSTOMER 中的主键,而是在它们各自的表中创建了一个名为 EmployeeNum 和 CustomerNum 的新代理主键。我想知道如果我这样做会破坏某种形式良好的/规范化规则吗?例如,在 EMPLOYEE 中,我认为很清楚,personID-->(employeeid,hiredate,hourlywage) 和employeeid-->(personid,hiredate,hourlywage),本质上这两个键都可以单独标识一个唯一的行。在实践中可以吗?(也假设我不想要复合主键)。

foreign-key database-design primary-key unique-constraint

-2
推荐指数
1
解决办法
230
查看次数

区分sql server中的test和prod数据

我们在 ms sql server 中有一个生产数据库,我的团队也在同一个 prod 数据库上进行测试。我想知道哪些是测试数据,以便将来我可以删除这些条目。我如何区分这些?任何帮助,将不胜感激。谢谢

schema database-design sql-server

-2
推荐指数
1
解决办法
75
查看次数