有两种不同的方式来设计表格:
- 使用自然键,即员工编号、国家代码等。
创建表国家(代码 char(2),名称 varchar(100),...);
创建表员工(empno number(5), name varchar(100), ...);
创建表顺序 (orderno number(5), country_code char(2), ...);
- 使用技术 ID:
创建表国家(id 号(9),代码 char(2),名称 varchar(100),...);
创建表员工(id 号(9),empno 号(5),名称 varchar(100),...);
创建表订单(id 编号(9),orderno 编号(5),id_country 编号(9),...);
无论如何,您都不会在程序中使用该名称。这只是您向用户显示的数据。您不使用它来访问记录。
至于技术 ID:这些仅用于数据库内部的引用。当您所做的是关于连接时,您只会在您的程序中使用它们。例如:让用户从列表中选择一个国家,然后使用其 ID 访问在该国家下的订单。
当你的程序知道代码时,你不应该使用任何一个。例如,当您想将英国与其他国家区别对待时,因为它是您的祖国,请使用其代码“GB”。当然,您可以让您的程序为国家“GB”选择 ID,并将您的订单与该 ID 进行比较。只是永远不要在您的应用中使用 select ... from orders where id_country = 187 之类的内容。
至于您的表格:在我的示例中,国家/地区已经有了代码;您可以使用 ISO 代码。您的项目类型可能没有。所以你发明了一个代码。这可以是您甚至向用户展示的代码,因此他们可能会在一段时间后习惯它们并开始谈论 RC 而不是像以前那样谈论赛车。或者您对用户保留代码并仅在程序中使用它们,因此他们永远不会看到代码“RC”,但对于您的所有程序来说,赛车都是 RC。
所以你要么有
create table item_type (code char(2), name varchar(100), ...);
或
create table item_type (id number(9), code char(2), name varchar(100), ...);
并在您的应用中使用代码字段。
补充一点:当使用自然键并让用户使用它们时,您通常会使用短代码作为“RC”,因为它们用于引用(外键)并且也很容易输入。使用 ID 时并且仅在内部使用代码,您还可以使用长代码,例如“RACING_CARS”以提高程序的可读性。