创建新表与添加新字段

时间:2015-08-03 06:35:53

标签: sql database rdbms

我有以下数据:

面料成本

time     |   No fabric|BangloreSilk|Chanderi|.... <- fabric types
--------------------------------------------
01/15    |         40 |         25 |...
02/15    |         45 |         30 |...
.....    |        ... |        ... |...

染色成本

time     |   No fabric|BangloreSilk|Chanderi|.... <- fabric types
--------------------------------------------
01/15    |         40 |         25 |...
02/15    |         45 |         30 |...
.....    |        ... |        ... |...

此处数据的结构类型列表相同。
现在添加我在下表中创建的数据:

fabric_type

id                  int
fabric_type_name    varchar

然后我有两种方法。

方法1:

fabric_cost

id                  int
fabric_type_id      int (foreign key to fabric_type)
cost                int

deying_cost

id                  int
fabric_type_id      int (foreign key to fabric_type)
cost                int

方法2:

fabric_overall_cost

id                  int
fabric_type_id      int (foreign key to fabric_type)
cost                int
fabric_or_dyeing    bit (to represent 0 for fabric cost and 1 for dyeing cost)

现在的问题是哪种方法会更好?

2 个答案:

答案 0 :(得分:2)

也许你可以创建另一个表 - cost_subjects

<强> cost_subjects

id                  byte
subject             varchar

<强>成本

id                  int
fabric_type_id      int (foreign key to fabric_type)
cost                int
cost_subject        byte (foreign key to cost_subjects table)

然后你可以扩展表格,包含更多主题,以包括面料成本

答案 1 :(得分:1)

这实际上取决于您的要求。是否有其他列仅对fabric_cost表是唯一的?是否有其他列仅对dyeing_cost表是唯一的?你的2个表会独立成长吗? 如果是,方法1更好。否则,方法2更好,因为您不需要在2个单独的表上进行CRUD(为了便于维护)。 另一种方法是:

id                  int
fabric_type_id      int (foreign key to fabric_type)
fabric_cost         float/double/decimal
dyeing_cost         float/double/decimal

第三种方法是,如果你总是有两种成本。您可能不希望使用int来获取费用。同样,这取决于您的要求。