我正在为一个项目开发研究文章数据库。我的教授批准了这个设计,但我觉得 Author's_University 表是多余的,可以将 University_ID 添加到 Articles_Authored 表中。谁能想出一个不改变它的理由?
感谢您的投入。
当我想将表 A 的列的值限制为仅从表 B 的相关列中的一组可选值中获取时,我遇到了麻烦。
问题是表 B 的相关列不是外键。如果我这样做,我想我可以为不同的列值多次使用相同值的正确状态将是不可能的 - 这不是我寻找的行为。
那么可以做什么呢?
我正在设计一个数据库,其中有不同的产品和供应商。例如,我有一个产品“手机”,比如说苹果 5S。这将通过我的网站从 Mapple、Mango 等不同供应商处出售。
我无法为每个供应商存储数据,因为这会导致数据冗余。我一直在考虑产品表的以下列:
我们可以看到产品名称每次都重复,导致数据冗余。
我主要关心的是如何避免数据冗余?如何设计Product表?
数据字典的别名是什么?? 指数 ?元数据?数据 ?系统目录
我已经知道的是,数据字典存储所有各种模式和文件规范及其位置。它们还包含有关哪些程序使用哪些数据以及哪些用户对哪些报告感兴趣的信息。但是数据字典的替代名称是什么?
设计表 A 中的每个条目都连接(1:n)到表 B 或表 C 中的条目的关系的正常方法是什么?
或者特别是:有一个用于角色、电影、剧集和电视节目季的表格。一个角色与 1) 电影或 2) 节目有关(除了 n:n 与季节(季节常规)和剧集之外)
x 可以是电影和节目的 ID。
两个相同的表(tv_characters 和 movie_characters)?
使用两个主键会更好吗(一个总是“电影”或“电视”)?
我有一个表reservation的列roomno(INTEGER),startdate(DATE),enddate(DATE)与主键(roomno, startdate)。
我如何在表上设置约束,以便不允许预订重叠?
我试图在SQLFIDDLE postgreSQL9.3 中实现这个
例如:
101 2016-01-01 2016-01-05
101 2016-01-03 2016-01-06 [This row should not be possible to insert]
Run Code Online (Sandbox Code Playgroud)
startdate并且enddate是数据类型date。
postgresql database-design exclusion-constraint postgresql-9.3 range-types
我是数据库设计的菜鸟,所以请耐心等待。我在 Microsoft Access 中有两个表:
表格1:
| ID | Field1 | Field2 |
|:---|--------|:-------|
| 1 | A | 1 |
| 2 | A | 2 |
| 3 | B | 5 |
| 4 | C | 8 |
| 5 | D | 20 |
| 6 | E | 32 |
| 7 | F | 22 |
| 8 | F | 7 |
Run Code Online (Sandbox Code Playgroud)
表 2:
| ID | Field1 | Field2 |
|:---|--------|:-------|
| …Run Code Online (Sandbox Code Playgroud) 我们的组织聘请第三方公司对我们的数据库进行维护。老实说,目前他们充当我们的 DBA,因为我们没有 DBA。
为了进行维护工作,他们使用的是 SA 用户。
有没有办法让他们成为他们可以使用的新用户,在不实际查看数据的情况下执行所有管理操作。因此,他们可以看到所有表和列,但他们将无法看到任何行。
如果我遗漏了什么,请随时启发我,因为我的 DBA 知识相当贫乏。
我处于设计数据库的早期阶段,我几乎没有(没有)数据库设计/规划经验。该数据库是作业跟踪引擎的一部分。
创建作业时,会为它们分配一个作业编号、描述、客户以及从列表中选择的多个关键字。我的问题与选择将所选关键字链接到作业的最有效(运行时速度)方式有关。
我看到了很多方法来做到这一点,有些不那么传统,而且可能比其他方法更危险......
选项 A - 将可以分配给作业的关键字的最大数量限制为值“N”(可能为 5),并具有下表列。
[id] [job number] [description] [client] [keyword 1] .. [keyword N]
1 123 zyx kk word test
2 183 tyx ff test -
3 214 xyx tt bleh -
Run Code Online (Sandbox Code Playgroud)
选项 B - 有一个关键字表,每个关键字都有一列。整个数据库中的关键字是手动管理的,但可以有任意数量的关键字,比如说 X(可能超过 200 个)。创建作业时,表中会添加一个新行,并在已选择关键字的每一列中输入作业编号或 id(来自另一个表的链接)。例如
[word] [test] [bleh] ....... [keyword X-1] [keyword X]
1 - 1 1 -
- 2 - - -
- - 3 3 3
Run Code Online (Sandbox Code Playgroud)
选项 C - 类似于“选项 B”,除了关键字有自己的表格。但这只是意味着我的数据库中有 X 个表...
在这个阶段,选项 A 是领跑者,但我并不特别喜欢对可以分配给工作的关键字数量的硬限制。任何人都可以提出替代设计,这样我就没有可笑的行/表数量,因此我不必限制分配给工作的关键字数量。
谢谢
我正在开发一个 PHP 应用程序,我需要在其中存储大于 100 万的值,但具有浮点的灵活性。我知道传统的 float 和 double。我希望最多存储两个小数点,并且只处理具有 2 个小数的数字的操作。
我选择了 double 和 unsigned 的列类型,但是每当我存储值大于一百万的行时,它就会被截断为 999999.99
为什么是这样?我正在寻找正确的数据类型/解决方案。如果您能指出我正确的方向,我将不胜感激!
提前感谢您的时间!
干杯。
database-design ×10
mysql ×3
sql-server ×2
datatypes ×1
erd ×1
ms-access ×1
postgresql ×1
range-types ×1
users ×1