Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java医生预约预约数据库(mysql)程序..在设计预约模式时遇到问题_Java_Mysql - Fatal编程技术网

java医生预约预约数据库(mysql)程序..在设计预约模式时遇到问题

java医生预约预约数据库(mysql)程序..在设计预约模式时遇到问题,java,mysql,Java,Mysql,我需要用Java构建一个程序,使用MySQL存储医生的预约。我有一个粗略的想法,我需要一个表格来记录医生id、患者id以及同一表格中的预约日期和时间。我是否缺少任何其他属性?我假设在Java实现中需要一个compareTo方法来检查可用时间。我希望我已经清楚地表明了我想要实现的目标。 目前,我有一个医生表和一个病人表,它们都有自己的id作为主键。我正在使用Hibernate将面向对象设计与MySQL中的关系进行映射,如果这很重要的话 日期时间是一个值 日期时间值几乎总是作为单个值在软件中跟踪。从

我需要用Java构建一个程序,使用MySQL存储医生的预约。我有一个粗略的想法,我需要一个表格来记录医生id、患者id以及同一表格中的预约日期和时间。我是否缺少任何其他属性?我假设在Java实现中需要一个compareTo方法来检查可用时间。我希望我已经清楚地表明了我想要实现的目标。 目前,我有一个医生表和一个病人表,它们都有自己的id作为主键。我正在使用Hibernate将面向对象设计与MySQL中的关系进行映射,如果这很重要的话

日期时间是一个值 日期时间值几乎总是作为单个值在软件中跟踪。从技术上讲,它们在内部表示为自事件发生以来的秒/毫秒/微秒/纳秒计数

您可能希望在用户界面中单独显示日期和时间,但不希望在内部显示

此外,你几乎肯定应该考虑时区。天真的程序员通常认为他们可以忽略时区,但这几乎肯定会在以后引起痛苦

了解数据库对日期时间的处理 不同的数据库处理日期时间的方式不同。阅读文档、玩游戏、做实验并准确了解数据库的工作方式是绝对重要的

对日期时间的处理非常出色且合理。即使您使用另一个数据库,也可以参考优秀的Postgres和(命令)文档,以了解各种问题以及SQL标准定义的内容与数据库特有的内容

全球存储,本地呈现 约会时间是一个令人惊讶的复杂问题。解决这一问题的一个关键是在工作中努力。以UTC格式在数据库(或序列化文件或XML/JSON通信)中存储日期时间值。除了定义“新一天的开始”等与本地时区有关的情况外,请使用UTC编写大部分业务逻辑

当您向用户演示时,可以使用ISO 8601格式,也可以本地化到他们自己的时区(或他们期望的时区)。这遵循国际化/本地化的基本理念。对于文本值,在代码中使用某些键字符串。在用户界面中显示后,将这些内部字符串映射为用户界面的本地化(翻译)文本值。有些带有日期时间:UTC内部,用户界面中的本地时区

一个警告:为了历史的缘故,您可能还想存储一个本地日期时间。由于政客和官僚的原因,时区规则经常变化,变化无常。您的软件的时区数据库可能已过期。因此,您可能希望存储您或用户认为是某个日期时间的内容。但不要依赖它;确定并存储UTC值

小贴士:学会24小时思考和阅读。作为一名程序员/调试器/系统管理员,您的生活将变得更加轻松,也不容易出错

Joda Time或java.Time 与java捆绑在一起的java.util.Date和.Calendar类是出了名的麻烦。避开它们

取而代之的是使用Java 8中的任何一个或新的内置版本(受Joda Time的启发,由JSR 310定义)

两个库都使用ISO 8601格式作为默认格式,用于解析和生成字符串

ISO 8601 是一个合理的标准,定义了如何以特定且不含糊的文本格式显示日期时间值、时区和偏移量、持续时间和期间。研究一下写得很好的维基百科页面

请特别注意标准所调用的内容。时间跨度定义如下:
PnYnMnDTnHnMnS
其中
P
表示“期间”,而
T
将日期部分与时间部分分开,其他可选部分为数字+字母。半小时预约时间为
PT30M
。这对您来说可能很方便,例如下面我的示例中的“period_u2;”字段。在Joda Time中,Period类通过跟踪月、日、小时等来表示时间跨度,并且知道如何以这种格式解析和生成字符串

半开 您可以选择以两种方式之一存储约会。一种方法是开始日期时间和持续时间(90分钟、20分钟等)。另一种方法是记录开始日期和停止日期时间。在这种情况下,通常最好的方法称为“半开放”。这意味着开始是包含的,而结束是独占的

例如,一个小时的预约时间为11:00到12:00,这意味着“从上午11点开始,一直到下一个小时(中午)的第一刻,但不包括在内”。下次约会时间为12:00至13:00

在StackOverflow中搜索“半开放”以查找更多讨论、示例和图表

多对多 病人和医生之间的关系就是我们所说的。一个医生看很多病人,一个病人可能看不止一个医生。确保您了解关系数据库设计中的多对多表。解决方案总是添加第三个表,有时称为“桥接”表,作为其他两个父表的子表。在您的情况下,约会表是桥接表

您需要知道如何跨多对多关系执行联接

直接SQL 如果您是编程新手或关系数据库新手,我建议您避免使用Hibernate。你真的应该了解正在发生的事情。Hibernate有一些适当的用途。但是,如果您认为Hibernate将神奇地使数据库问题消失,您会失望的

属性 属性由您决定。它们取决于你试图解决的业务(或家庭作业?)问题。你基本上是对的

预约安排是一个非常困难的业务问题,需要为其编写软件。前