社团信息(至少包括:社团编号、社团名称、社团管理员编号、社团说明) 活动信息(至少包括:活动编号、活动名称、活动时间、活动说明、社团编号) 说明:活动属于社团 报名表(至少包括:报名编号,活动编号,报名时间,报名状态(预报名,确认,无效),报名人员等信息) 参加活动人员信息表(至少包括人员编号,姓名,登录密码,联系地址,手机号码等) 管理员信息表(至少包括管理员编号,姓名,登录密码、联系电话、是否超级管理员等) 对于实体,应该设置合适的主键,不能将可能会重复的属性,达到3NF要求,写出sql代码
时间: 2024-04-18 17:26:00 浏览: 105
以下是根据您提供的实体和属性设计的SQL代码,以满足3NF要求,并设置合适的主键:
```sql
-- 创建社团信息表
CREATE TABLE clubs (
club_id INT PRIMARY KEY,
club_name VARCHAR(255) NOT NULL,
admin_id INT,
club_description VARCHAR(255),
FOREIGN KEY (admin_id) REFERENCES admins(admin_id)
);
-- 创建活动信息表
CREATE TABLE activities (
activity_id INT PRIMARY KEY,
activity_name VARCHAR(255) NOT NULL,
activity_time DATETIME,
activity_description VARCHAR(255),
club_id INT,
FOREIGN KEY (club_id) REFERENCES clubs(club_id)
);
-- 创建报名表
CREATE TABLE registrations (
registration_id INT PRIMARY KEY,
activity_id INT,
registration_time DATETIME,
registration_status VARCHAR(20),
participant_id INT,
FOREIGN KEY (activity_id) REFERENCES activities(activity_id),
FOREIGN KEY (participant_id) REFERENCES participants(participant_id)
);
-- 创建参加活动人员信息表
CREATE TABLE participants (
participant_id INT PRIMARY KEY,
participant_name VARCHAR(255) NOT NULL,
participant_password VARCHAR(255),
participant_address VARCHAR(255),
participant_phone VARCHAR(20)
);
-- 创建管理员信息表
CREATE TABLE admins (
admin_id INT PRIMARY KEY,
admin_name VARCHAR(255) NOT NULL,
admin_password VARCHAR(255),
admin_phone VARCHAR(20),
is_superadmin BOOLEAN
);
```
以上SQL代码创建了五个表:clubs(社团信息表)、activities(活动信息表)、registrations(报名表)、participants(参加活动人员信息表)和admins(管理员信息表)。每个表都有适当的主键和外键,以满足3NF要求。请根据实际需求进行进一步的优化和调整。
阅读全文