我试图围绕数据库规范化.这是我第一次尝试创建一个工作数据库,所以请原谅我的无知.我正在尝试为类项目创建一个自动化的grad Check系统.下表记录了一定数量的目录年份的主要选项.该表如下
PID Title Dept Courses Must_have
Run Code Online (Sandbox Code Playgroud)
一些选项使用户可以从列出的总数中选择一组数量的类(因此Must_have属性).完成的行看起来像这样:
PID Title Dept Courses Must_have
--------------------------------------------
1 bis acct 201|202 NULL
Run Code Online (Sandbox Code Playgroud)
Title是主要版本可以附带的选项的名称.如果bis(业务信息系统)可以选择类,则一行只有一行中有一个数字Must_have.
我的问题是我应该将这个表分成两个不同的表吗?我知道我现在拥有的方式似乎有点......错了.任何帮助将不胜感激.
我想将我的桌子标准化为所有3NF我相信以下所有内容都在3NF,因为没有传递性.如果我错了,请澄清一下
CUSTOMERS(custID,custName,custAddress,custDOB,custEmail)
EMPLOYEES(empID,empName,empPhone,empAddress,BranchName)
假设是每个员工在多个分支机构工作,每个分支机构有一个或多个员工
我在第一范式(1NF)中有以下模式 - 即所有单元格都包含原子值:
ClientRental (clientNo, propertyNo, clientName, propertyAddress, rent,
rentStart, rentFinish, ownerNo, ownerName)
Run Code Online (Sandbox Code Playgroud)
总的概述是客户可以从租赁代理商租用许多房产.每个属性都有一个所有者.对于那些熟悉本书的人来说,这是Connolly&Begg从Database Systems中提取的一个例子.
我试图确定功能依赖 - >候选键,部分依赖和传递依赖等
我正在关注一本教科书,但有些建议的解释有些不足.有人可以向我解释我的建议是否正确:
FD1 -> clientNo -> clientName
FD2 -> propertyNo -> propertyAddress, rent, ownerNo, ownerName
FD3 -> ownerNo -> ownerName
Run Code Online (Sandbox Code Playgroud)
我肯定错过了更多的功能依赖,但我缺乏经验阻止我识别它们.显然我无法确定部分依赖关系,因为我还没有为上述关系/模式分配主键.
有人可以帮助我识别其他功能依赖...我不清楚是什么决定某些东西作为传递依赖...
如果有任何需要更多说明,请告诉我.
编辑3NF:
我的3NF关系:
Client {clientNo(PK), clientName}
Owner {ownerNo(PK), ownerName}
Property {propertyNo (PK), propertyAddress, rent}
ClientRental {clientNo(PK), propertyNo(PK), rentStart, rentFinish, ownerNo(FK)}
Run Code Online (Sandbox Code Playgroud) 第四范式描述了BCNF中的关系,但也没有包含非平凡的多值依赖关系的关系.
我正在努力理解一个微不足道的多值依赖和一个非平凡的多值依赖是什么和差异.如何识别后者才能执行4NF?
编辑:
我主要需要知道琐碎和非平凡依赖之间的区别是什么?
我正在使用normalize函数从String中获取绝对路径,
org.apache.commons.io.FilenameUtils.normalize(String)
Run Code Online (Sandbox Code Playgroud)
但是,当我使用时,normalize(String)我得到:
对于MyClass类型,方法normalize(String)未定义
我试过了 : import org.apache.commons.io.FilenameUtils;
我从Apache网站下载了该库,并将其链接到我的项目,但我得到了同样的错误.
我不想每次都写整行来调用函数.
这有什么解决方案吗?
谢谢
我目前在系统分析课程中,我想更好地理解规范化的使用.对于3NF,如果我正在处理包含学生ID,姓名,电话号码和专业的表格.我必须只使用学生证和学生证,因为学生姓名和电话号码都可以通过身份证找到.我明白了吗?
我有一个动态生成组中元素的表单,所以每次有人提交表单时我都无法确定要向数据库提交多少内容.
Form
-name
-age
-incident (0)
-incident description (0)
-incident (1)
-incident description (1)
-incident (2....)
-incident descritpion (2....)
Run Code Online (Sandbox Code Playgroud)
并且有大约10个可能的动态生成的表单元素组,所以我想我会为整个表单创建一个表,并且每个表依次为动态生成的元素组创建一个表.
formdata
name varchar(30)
age int(2)
incident0 sql
incdient1 sql
Run Code Online (Sandbox Code Playgroud)
那可能吗?或者除了在我的表中创建一大堆我很少使用的列之外还有不同的方式吗?如果我创建了一大堆列会有内存浪费,或者如果这些列中没有提交大量数据会不会产生影响?
我建模系统,该系统将在各种实体类型"upvotes" - Reports,Reviews和Collections.
这些是唯一可以被投票的三个实体,但未来可能会有更多.
目前,DB模式有ReportUpvotes,ReviewUpvotes和CollectionUpvotes.
我想知道将所有这些表放在一个Upvotes表中是否更好,并带有枚举Type.
在评估此类决策时,我应该考虑什么?
我正在创建一个类似于youtube的视频网站,除了它的目标是独立游戏社区.
我正在进行桌面设计,并且在位置栏中遇到了一些绊脚石.
主要网站如何设计用于存储位置的表格?
Profile 表:
ID | username | country | state
0 | jack | US | New York
1 | ted | Canada | Alberta
Run Code Online (Sandbox Code Playgroud)
要么
ID | username | countryID
0 | jack | 1
1 | ted | 2
Run Code Online (Sandbox Code Playgroud)
Regions 表:
ID | country | state
0 | United States | Texas
1 | United states | New york
2 | Canada | Alberta
Run Code Online (Sandbox Code Playgroud)
还是有一些我错过的设计?
我对两种方法感到困惑,在此两种方法中,对数组进行规范化并且其总和必须为1.0:
要标准化的数组:
array([ 1.17091033, 1.13843561, 1.240346 , 1.05438719, 1.05386014,
1.15475574, 1.16127814, 1.07070739, 0.93670444, 1.20450255,
1.25644135])
Run Code Online (Sandbox Code Playgroud)
方法1:
arr = np.array(values / min(values))
array([ 1.25003179, 1.21536267, 1.32415941, 1.12563488, 1.12507221,
1.23278559, 1.23974873, 1.14305788, 1.00000000, 1.28589392,
1.34134236])
arr1 = arr / sum(arr) # Sum total to 1.0
array([ 0.09410701, 0.09149699, 0.09968761, 0.08474195, 0.08469959,
0.09280865, 0.09333286, 0.08605362, 0.07528369, 0.09680684,
0.1009812 ])
Run Code Online (Sandbox Code Playgroud)
方法2:
arr = np.array((values - min(values)) / (max(values) - min(values)))
array([ 0.73249564, 0.63092863, 0.94966065, 0.3680612, 0.3664128 ,
0.68197101, 0.70237028, 0.41910379, 0.0000000, 0.83755771,
1.00000000])
arr2 …Run Code Online (Sandbox Code Playgroud)