簡體   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