繁体   English   中英

健身房预约数据库架构

[英]Gym Appointments database schema

我正在用PHP / Symfony2 / Doctrine 2开发一个Gym Management应用程序。我也在开发约会模块。 约会不能是带有特定event_date(发生日期的日期)的单行,因为约会每周持续几天,持续数周或数月。 我如何通过以日历格式显示约会来设计用于保留约会的实体,以便在某个月的每一天都可以查看当天的约会?

先感谢您。

Appointment实体应该保存ID,描述符,start_date,end_date等信息。要注意的重要一点是“开始”和“结束”,这使您的Appointment可以灵活地跨越多个天/月。

在日历中,如果要显示开始和结束日期在1月1日到1月7日之间的事件,它将是以下查询构建器对象:

// In EntityRepository for Appointments

$this->getQueryBuilder('a')
     ->where('a.startDate BETWEEN :start AND :end')
     ->andWhere('a.endDate BETWEEN :start AND :end')
     ->setParameters([
        "start" => '2016-01-01',
        "end"   => '2016-01-07'
     ])
     ->getQuery()
     ->getResult();

如果您只希望某天发生并在同一天结束的事件,则只需调整参数即可。

好的,这是一个好的开始。 我认为它可以弥补您设置的所有限制。 我已经使用了很多合成键,但这是为了简化表格。

由于您设置了约束:“因为它每周持续几天,持续数周或数月”,因此是错误的查看方式。 您必须将约会的每个条目存储在表中(如果绝对需要,可以使用xml文件,但是最好的方法是按照您的想法使用mysql)

在这里,您将每个日期存储在C_date表中,然后在Appointment_date中引用该日期。 这是约会的时间。 我会拜拜删除C_date并insted将信息添加到约会。

create table User(
    user varchar(32) NOT NULL PRIMARY KEY
); 


create table C_date ( 
    c_date DATE NOT NULL PRIMARY KEY 
);

create table Appointment(
    user varchar(32) NOT NULL, 
    trainer varchar(32) NOT NULL,
    CONSTRAINT FOREIGN KEY(user) REFERENCES User(user), 
    CONSTRAINT FOREIGN KEY(trainer) REFERENCES User(user),
    CONSTRAINT id PRIMARY KEY(user, trainer)
); 


create table Appointment_date( 
    user varchar(32) NOT NULL, 
    trainer varchar(32) NOT NULL,
    app_date DATE NOT NULL COMMENT "The time and date for the appointment",
    time TIME NOT NULL, 
    CONSTRAINT FOREIGN KEY(user, trainer) REFERENCES Appointment(user, trainer),
    CONSTRAINT FOREIGN KEY(app_date) REFERENCES C_date(c_date), 
    CONSTRAINT id PRIMARY KEY(user, trainer, app_date) 

);

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM