DBMS设计多值属性

时间:2012-08-28 18:33:54

标签: mysql rdbms multivalue-database

我必须设计一个数据库,其中有关打印机资源使用的一些信息将记录在mysql数据库中。设计数据库的最佳方法是什么? 我不想为每个学生创建一个表格,因为大约有6000个表格,如果要维护档案,这些表格每年都会增长。此外,很难根据学生的注册号创建表格。有没有比存储多值属性更好的方法来打印细节。请提出一些解决方案。查询也应该有效。

2 个答案:

答案 0 :(得分:1)

无需为每个学生创建不同的表格。 只需创建一个表学生,其中将包含通过其注册号识别的学生的个人详细信息(例如Regno-PrimaryKey)。

然后是另一个表资源,它将具有以下模式: -RecNo整数PK -StudentID Foriegn键在学生表中引用Regno -用法 或数据,时间(如果需要)

这将起作用,您无需创建6000个或更多表。

答案 1 :(得分:0)

您已经提供了非常的信息,但这里有一个镜头:

create table student 
(
   registration_no    varchar(50)  not null primary key,
   first_name         varchar(50),
   last_name          varchar(50),
   registration_year  integer not null
);

create table printer
(
   printer_id    integer not null primary key,
   printer_name  varchar(50) not null,
   ip_address    varchar(50) not null,
   queue_name    varchar(50) not null
);

create unique index idx_printer_name on printer (printer_name);

create table printer_usage
(
   usage_id         integer not null primary key,
   student_reg_no   integer not null,
   printer_id       integer not null,
   usage_date       datetime not null,
   pages            integer not null
);

alter table printer_usage 
   add constraint fk_usage_student 
   foreign key (student_reg_no) references student (registration_no);

alter table printer_usage 
   add constraint fk_usage_printer 
   foreign key (printer_id) references printer (printer_id);

您可能需要向表中添加更多列以存储所需的所有内容。我只想猜你想要存储的东西。