- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
确定车辆是否可以驾驶的最佳方法是什么。
假设我们有不同的驾驶执照类型:A、B、BE(等)
我有以下表格...
Person ( ID, Name, LicenseTypes )
DrivingLicense ( ID, Type, ExpDate )
LicenseTypes ( ID, Type )
Vehicle ( ID, Brand, VehicleType )
VehicleType ( ID, VehicleType )
我想实现的是,如果一个人的驾照类型为“A”并且他拥有的车辆是汽车,他可能不会驾驶该车辆,因为该车辆需要“B”。
如果此人有多种驾驶执照类型,假设:A 和 B,对汽车的要求是 B,他可以驾驶车辆。
是否最好在 Vehicletype 表中添加一列,使用 Licensetype 和 Join 这些表?
或者我可以使用 MySQL 行/PHP 命令来比较这些值并使用某种语句吗? IF value = ""and "", 但我认为这将是一个困惑的解决方案。
最佳答案
好的,这会很长。我希望您能大致了解我在这里所做的尝试;总而言之,我使用了 6 个表。此外,我没有使用您的表名(在我尝试我的东西时,问题和评论中有一些编辑),抱歉。
下面的代码适用于例如sqlite3
我想我只使用了 ANSI SQL,所以它应该适用于所有东西。使用本地数据库的特殊性进行改进;例如,我没有放入自动递增 ID,并且只对文本使用 varchar
,因为这是最大的公分母。
在每个表定义下面,我放入了一些虚拟数据加载语句以查看是否一切正常,我还放入了一些 select
语句以制作一个漂亮的列表。当你在 sqlite3
中运行它时,你会得到以下输出:
What person has which license?
Karel A required to drive a motorcycle
Karel B required to drive a car
John AM required to drive a scooter
John B required to drive a car
What vehicle types may be driven with which licenses?
car B
scooter AM
scooter A
scooter B
motorcycle A
Which person may drive which vehicle given their license?
Karel Solex scooter A required to drive a motorcycle
Karel Vespa scooter A required to drive a motorcycle
Karel BMW K1200GT motorcycle A required to drive a motorcycle
Karel Ducati Monst motorcycle A required to drive a motorcycle
Karel Peugeot 307 car B required to drive a car
Karel Volvo V70 car B required to drive a car
Karel Solex scooter B required to drive a car
Karel Vespa scooter B required to drive a car
John Solex scooter AM required to drive a scooter
John Vespa scooter AM required to drive a scooter
John Peugeot 307 car B required to drive a car
John Volvo V70 car B required to drive a car
John Solex scooter B required to drive a car
John Vespa scooter B required to drive a car
继续进入 SQL 代码。首先,您拥有他们持有的人员和执照。我使用典型的交叉表对此进行了建模; person
包含有关人员的信息,license
包含有关许可证类型的信息,person_license
是表示哪个人拥有哪些许可证的交叉表:
-- Known persons
create table person (
person_id integer not null unique primary key,
person_name varchar(255) not null
);
insert into person (person_id, person_name) values (1, 'Karel');
insert into person (person_id, person_name) values (2, 'John');
-- Known license types
create table license (
license_id integer not null unique primary key,
license_name varchar(3) not null unique,
license_desc varchar(255)
);
insert into license (license_id, license_name, license_desc)
values (1, 'AM', 'required to drive a scooter');
insert into license (license_id, license_name, license_desc)
values (2, 'A' , 'required to drive a motorcycle');
insert into license (license_id, license_name, license_desc)
values (3, 'B' , 'required to drive a car');
-- What licenses do the persons hold (cross table so that 1 person may hold
-- multiple licenses. For example: Karel has A and B, John has AM and B.
-- NOTE: There is no expiry date here, you could stick it into this table when
-- you need it.
create table person_license (
person_id integer references person(person_id) not null,
license_id integer references license(license_id) not null
);
insert into person_license (person_id, license_id) values (1, 2);
insert into person_license (person_id, license_id) values (1, 3);
insert into person_license (person_id, license_id) values (2, 1);
insert into person_license (person_id, license_id) values (2, 3);
-- Here is a listing to show what licenses a given person has.
select 'What person has which license?';
select person.person_name, license.license_name, license.license_desc
from person, license, person_license
where person_license.person_id = person.person_id
and person_license.license_id = license.license_id;
select '';
接下来是系统中的车辆和车辆类型。对于演示,我输入了三种类型;小型摩托车、摩托车和普通汽车。您可能希望将其更改为 cars-without-trailer 和 cars-with-trailer 等,具体取决于您需要支持的许可证类型。表vehicle_type
当然是类型,vehicle
是系统中所有车辆的表。它具有 1:N 关系,因此它会列出每种车辆的类型。
-- Vehicle types.
create table vehicle_type (
vehicle_type_id integer not null unique primary key,
vehicle_type_name varchar(255) not null
);
insert into vehicle_type (vehicle_type_id, vehicle_type_name)
values (1, 'car');
insert into vehicle_type (vehicle_type_id, vehicle_type_name)
values (2, 'scooter');
insert into vehicle_type (vehicle_type_id, vehicle_type_name)
values (3, 'motorcycle');
-- Known vehicles in our system (2 cars, 2 scooters, 2 motorbikes)
create table vehicle (
vehicle_id integer not null unique primary key,
vehicle_name varchar(255) not null,
vehicle_type_id integer not null references vehicle_type(vehicle_type_id));
insert into vehicle (vehicle_id, vehicle_name, vehicle_type_id)
values (1, 'Peugeot 307', 1);
insert into vehicle (vehicle_id, vehicle_name, vehicle_type_id)
values (2, 'Volvo V70', 1);
insert into vehicle (vehicle_id, vehicle_name, vehicle_type_id)
values (3, 'Vespa', 2);
insert into vehicle (vehicle_id, vehicle_name, vehicle_type_id)
values (4, 'Solex', 2);
insert into vehicle (vehicle_id, vehicle_name, vehicle_type_id)
values (5, 'BMW K1200GT', 3);
insert into vehicle (vehicle_id, vehicle_name, vehicle_type_id)
values (6, 'Ducati Monster', 3);
然后是车辆类型和所需许可证之间的关系。我把它做成 N:N 关系,这样一个驾照就可以让你驾驶不止一种车型。在此演示中,汽车执照允许您驾驶汽车或踏板车;摩托车驾照允许您驾驶摩托车或踏板车,而踏板车驾照仅允许您驾驶踏板车。
-- What license do you need for what type of a vehicle?
-- A scooter license allows you only to drive a scooter.
-- A motorcycle license allows you to drive a motorbike and a scooter.
-- A car license allows you to drive a car and a scooter.
create table vehicle_type_license (
vehicle_type_id integer not null references vehicle_type(vehicle_type_id),
license_id integer not null references license(license_id)
);
-- Car requires B
insert into vehicle_type_license (vehicle_type_id, license_id) values (1, 3);
-- Scoorter requires AM, A or B
insert into vehicle_type_license (vehicle_type_id, license_id) values (2, 1);
insert into vehicle_type_license (vehicle_type_id, license_id) values (2, 2);
insert into vehicle_type_license (vehicle_type_id, license_id) values (2, 3);
-- Motorcycle requires A
insert into vehicle_type_license (vehicle_type_id, license_id) values (3, 2);
-- And a listing to show it
select 'What vehicle types may be driven with which licenses?';
select vehicle_type.vehicle_type_name, license.license_name
from vehicle_type, license, vehicle_type_license
where vehicle_type.vehicle_type_id = vehicle_type_license.vehicle_type_id
and license.license_id = vehicle_type_license.license_id;
select '';
最后..这是谁可以驾驶什么车辆的结果:
-- Finally...
-- Let us see what vehicles the persons may drive.
select 'Which person may drive which vehicle given their license?';
select person.person_name, vehicle.vehicle_name,
vehicle_type.vehicle_type_name,
license.license_name, license.license_desc
from person, vehicle, vehicle_type,
license, person_license, vehicle_type_license
where vehicle.vehicle_type_id = vehicle_type.vehicle_type_id
and license.license_id = person_license.license_id
and person.person_id = person_license.person_id
and vehicle_type_license.vehicle_type_id = vehicle_type.vehicle_type_id
and vehicle_type_license.license_id = person_license.license_id
;
关于php - 验证 2 个值以确定 "Yes"或 "No",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28022841/
这个问题在这里已经有了答案: NSNumber Literals (5 个答案) 关闭 6 年前。 我正在发出一个 HTTP 请求,我必须在其中发送一个 bool 值。我试过他们两个。 两者的工作方
我使用 FireBug 测试了这两种情况,结果看起来非常相似: >>> var x = {"active": "yes"} >>> x.active "yes" >>> var x = {active
在 Objective-c 中,@YES/@NO 和 YES/NO 有什么区别?每种类型使用什么类型? 最佳答案 @YES 是 [NSNumber numberWithBool:YES] 的缩写形式
我正在编写一个脚本来创建虚拟机,显然我想支持标准的确认/whatif 语义。但是,如果我要创建多台机器,最好能区分"is"和“全部是”,这样我就不必重新确认每台机器。 $pscmdlet.Should
这个问题在这里已经有了答案: In JavaScript, why is "0" equal to false, but when tested by 'if' it is not false by
我需要编写一个正则表达式来验证字符串。如果正则表达式包含以下任何内容,则应传递字符串:y、Y、yes、YES , 1。这些字母可以是任何大小写。我是正则表达式和 JavaScript 的新手。 最佳答
我是网络开发的新手,如果能得到任何帮助,我将不胜感激。我有一个 HTML/CSS slider ,当 slider 处于"is"位置(如名字和主题)时,我想显示更多的文本框字段。如果可能的话,我真的希
bash: $: yes a [some output] then press Ctrl+Z $: yes b [some output] then press Ctrl+Z 然后,执行两
我感兴趣的是能够在 Yes/No 提示符下自动让我的 cmd 输入 Yes: __
以上说明了一切-我将 UITextField 设置为安全,但希望为用户提供使其不安全的选项(因此,如果他们在私有(private)区域中,他们可以确定输入的内容)。但是,假设他们误按了切换开关,并想将
当 ssh hostname 提示 The authenticity of host 'foobar' can't be established. ECDSA key fingerprint is .
如何在自定义 MKAnnotationView 上正确设置半径并允许标注?这会引发异常: 来 self 的自定义 MKAnnotationView 类: - (id)initWithFrame:(CG
如果我有 1200 行,并且我希望我的 120 行说"is"而其余的说“否”,我应该如何将其应用于 Excel 文件?我知道使用: =CHOOSE(RANDBETWEEN(1,2),"Yes","No
我想进行一个查询,返回如下所示的表结果: 列标题是我的一个表格中的字段,下面的数字是该字段的是/否条目数。 我遇到的问题是在行的开头显示是/否。我希望它以这种方式组织,以便更好地根据数据创建图表。 现
这个问题在这里已经有了答案: Literal @YES not working in iOS 5 / Xcode 4.4 (2 个答案) 关闭 7 年前。 使用 XCode 4.4 的 Conver
这段代码: $query = array( "var" => "no", "not_var" => "yes", "var2" => "maybe" ); print http
在我的 Dynamics CRM 机会表单中,我添加了销售配额分配网格。如果在整个网格中输入了四个以上"is",我希望显示一条警告消息(或类似的内容)。例如,假设记录“A”t 有 4 个标记为"is"
This question already has answers here: How do I perform an IF…THEN in an SQL SELECT? (31个答案) 已关闭6年。
考虑以下文档: foo: bar: Yes 根据the spec,这应该解释为Boolean,而不是String。 但是,it seems对此文档产生了相同的解释: foo: bar: 'Ye
在网页的第一页上,它要求用户从下拉列表中选择他们想要的产品类型,并且为每个产品指定一个值 0,1,2...然后,一旦他们继续,他们就会被发送到不同的网页,并根据他们选择的产品在那里我希望单选按钮自动选
我是一名优秀的程序员,十分优秀!