我在一家随机公司担任“访客”开发人员。
我正在处理一个根据定义(Oracle)没有主键的表。
名为“SOMETHING_ID”的列是 varchar2(10) 并在插入时通过以下操作构造。它用作主键并被其他表引用。
'A_STRING' || LPAD(SEQUENCE_NAME.NEXTVAL, 7, '0')
Run Code Online (Sandbox Code Playgroud)
主键数据的一些示例是
CH-00004321
CH-00004322
CH-00004323
Run Code Online (Sandbox Code Playgroud)
我的问题是,
首先,在什么情况下使用由记录类型(比方说,CH 表示中国菜,In 表示印度菜,MX 表示墨西哥菜)和序列号的组合的主键是合理的?
其次,在什么情况下不定义主键但您有一个明确区分每一行的列是合理的?
第三,我的看法是否正确,我看到类型字符串(CH、IN、MX)和序列号的组合违反了第一规范化?
第四,在表中,只有一个“类型字符串”值(假设是 CH)。是否可以将该字符串添加到 pk 而它似乎没有必要,因为只有一个值?(尽管与我的食物示例不同,表格的性质似乎不允许类型字符串的任何其他值。也许您可以将表格名称视为“CHINESE_FOOD”,因此没有其他类型的字符串值似乎合乎逻辑。)
注 - 1. 实际列、序列名称替换为任意名称。
2. 本软件的目的是预测自然灾害造成的损失。