Database design 多用户消息传递模式设计

Database design 多用户消息传递模式设计,database-design,Database Design,我正在为一个新项目设计一个数据库。我遇到了一些麻烦。在我的设计中,我有两张桌子,学生和教师。我想将他们的消息存储到消息表中 1.学生 2.教员 3.信息 蓝色线条定义用户表的外键。蓝色选定列是用户表的外键 它基本上由具有以下功能的安全消息传递系统组成: *每个学生都可以互相发送信息 *每一位教员都可以互相传递信息 *学生和教师都可以互相传递信息 1.我很难实现学生、教师和消息表之间的关系 2.把它们分开放在两张桌子上,对吗??或者我如何实现它 3.请建议我如何改进设计及其关系,而不是SQL代码

我正在为一个新项目设计一个数据库。我遇到了一些麻烦。在我的设计中,我有两张桌子,学生和教师。我想将他们的消息存储到消息表中

1.学生 2.教员 3.信息

蓝色线条定义用户表的外键。蓝色选定列是用户表的外键

它基本上由具有以下功能的安全消息传递系统组成:

*每个学生都可以互相发送信息

*每一位教员都可以互相传递信息

*学生和教师都可以互相传递信息

1.我很难实现学生、教师和消息表之间的关系

2.把它们分开放在两张桌子上,对吗??或者我如何实现它

3.请建议我如何改进设计及其关系,而不是SQL代码

我的完整设计在这里


这是我的建议

  • 添加一个新的table call用户,从教员和学生那里获取所有类似的列
  • 为教师和学生指出外键。以下是你所看到的关系
  • 在邮件表中添加另一列receiver引用uid,您的邮件表必须具有sender和receiver right?否则你就不知道这个消息是给谁的
  • 指向用户表和消息表的外键,发送方/接收方vs uid。这是你想要得到的另一种关系
  • 查看一下表中的通知和消息列,不确定它们是否仍然需要,所以我只保留它
  • 快乐编程


    那么,每个人都可以向其他人发送消息?我不确定我是否看到了问题。@paqogomez我在这里没有实现任何关系,请检查屏幕的简短部分。我仍然不明白,您是否正在寻找一个sql查询来显示每个用户的消息?你想知道哪些约束要摆在桌面上吗?您的要求是什么?我不是在寻找sql查询。我有两张桌子,学生和教员。我想将他们的消息存储到消息表中。如何改进我的设计?消息表应该包含发送者id和接收者id检查我的2,4,在那里我指出了要使用哪一列,语法方面你应该可以自己做对吗?我不明白你指的是什么类型的关系。在步骤2中,表教员和学生的uid外键???2.指向表教员和学生的外键。以下是你所看到的关系。所有学生/教员都属于用户,uid上的PK和fid/sidYah上的FK正是我想要的。现在我明白了。@joynal,生日和发送日期之间的关系是什么?
    CREATE TABLE user (
                    uid VARCHAR(15) NOT NULL,
                    first_name VARCHAR(20) NOT NULL,
                    last_name VARCHAR(20) NOT NULL,
                    nick_name VARCHAR(10) NOT NULL,
                    genere VARCHAR(6) NOT NULL,
                    email VARCHAR(50) NOT NULL,
                    facebook VARCHAR(50) NOT NULL,
                    mobile INT NOT NULL,
                    image VARCHAR(100) NOT NULL,
                    cv VARCHAR NOT NULL,
                    PRIMARY KEY (uid)
    );
    
    
    
    CREATE TABLE Message (
                    Message_id BIGINT NOT NULL,
                    sender VARCHAR NOT NULL,
                    receiver VARCHAR NOT NULL,
                    text VARCHAR NOT NULL,
                    send_date_time DATE NOT NULL,
                    PRIMARY KEY (Message_id)
    );
    
    
    CREATE TABLE faculty (
                    fid VARCHAR(15) NOT NULL,
                    designation VARCHAR(50) NOT NULL,
                    notification VARCHAR NOT NULL,
                    message VARCHAR NOT NULL,
                    PRIMARY KEY (fid)
    );
    
    CREATE TABLE student (
                    sid VARCHAR(15) NOT NULL,
                    batch TINYINT NOT NULL,
                    cgpa DOUBLE PRECISIONS NOT NULL,
                    PRIMARY KEY (sid)
    );