2014-10-27 75 views
0

为我的情况创建SQL数据库表格的最佳方式是什么?选项1还是选项2?使用数组值创建SQL表格

TMyRecord = record 
id : integer; 
name : string; 
price : Array [0.100] of double; 

如果我想在SQL数据库中创建表,

选项1: - 创建一个表,并把所有price条目IDName

CREATE TABLE My_Record 
(
ID int, 
Name varchar(255), 
price float, 
); 

选项2: - 用两个表,并彼此链接?

CREATE TABLE My_Record 
(
ID int, 
Name varchar(255), 
price float, 
PRIMARY KEY (P_Id) 
); 
CREATE TABLE My_Record_ArrayData 
(
FOREIGN KEY (ID) REFERENCES My_Record(ID) 
price float, 
); 

在此先感谢。

+0

你的第二个选择与第一个没什么区别,只是更无用的绒毛。在这两种情况下,您都有尾随逗号以及其他*看似*语法错误。 – vol7ron 2014-10-27 03:47:33

+0

您没有提及您将使用的DBMS。例如在PostgreSQL中,你可以创建完全这样的表。 – TLama 2014-10-27 07:04:00

+0

如果对同一产品有多种价格的可能性,则在其他情况下选择2,选项1适合您。 – mg30rg 2014-10-30 10:29:09

回答

1

选项2更好,因为您不重复每个价格值的名称列。

而且你只需要在My_Record存储ID,名称中的第二个选项,所有价格值可以去My_Record_ArrayData

另一种选择是使用XML数据类型去存储所有价格值,那么你只会有一个包含该名称所有值的表格。

+0

XML数据类型?我希望你没有想到XML文件的原始存储(在这种过度增长的结构中,如何按价值进行搜索)。即使您在考虑某种(由于缺少数据库管理系统的问题)存储时,数据库管理系统存储所有未解析的值时,它看起来对我来说是一种矫枉过正。 – TLama 2014-10-27 07:13:19