我明白你想使用SQLite。运行SQLite的客户端(Sqliteman或类似),创建一个新的数据库,并运行下面的脚本:
create table category (
category_id integer not null primary key,
name varchar(80) not null
);
create table meal (
meal_id integer not null primary key,
name varchar(80) not null,
directions text
);
create table meal_category (
meal_category_id integer primary key,
meal_id integer not null references meal,
category_id integer not null references category
);
然后,您可以插入数据是这样的:
insert into category (category_id, name) values (1, 'Breakfast');
insert into category (category_id, name) values (2, 'Lunch');
insert into meal (meal_id, name) values (1, 'Orange and vanilla protein oatmeal');
insert into meal (meal_id, name) values (2, 'Chili-chocolote protein oatmeal');
insert into meal_category (meal_category_id, meal_id, category_id) values (1, 1, 1); -- meal 1 is a breakfast
insert into meal_category (meal_category_id, meal_id, category_id) values (2, 2, 1); -- meal 2 is a breakfast
和查询它像这样:
select m.name || ' is ' || c.name from meal m
join meal_category mc on m.meal_id = mc.meal_id
join category c on mc.category_id = c.category_id;
这是最简单的设计。你可能想要添加额外的字段和一些索引 - 请检查关于SQL的教程如何做到这一点。无论如何,以上将给你一个工作的SQLite数据库。
您可能需要桌子上的“成分”,它可以保存任何可用于配方(蛋,面粉,水等)的数据和“膳食成分”,它会告诉您膳食中是否应有成分。配方文本可以保存在meal.recipe字段中。
请注意,有不同的方法来设计一个数据库,通常你应该提供一个详细的系统规范,它将使用数据库来有一个好的设计。
如果您认为数据库将用于什么样的数据,您希望从中获取什么样的数据,然后在SQL上读取并自行进行一些实验,那么最好。例如,如果您想要查找任何使用面粉的餐点,最好将食材放在单独的餐桌上,并与餐点相关联 - 就像一个类别与餐点相关联,这就是所谓的“多对多关系”。但是,如果你不关心这样的功能,食谱和配料列表可以放在meal.recipe字段中。数据库的设计应该反映出你的需求以及你想要建立模型的现实部分。
是的非常感谢。 – Ghanshyam 2014-11-10 09:01:37
也请在mysql中说明一下流程! – Ghanshyam 2014-11-10 09:02:57
你的问题是专门针对sqlite的。上面的代码是相当普遍的sql,并可以在mysql中工作,也许有一些小调音。你需要检查数据库引擎的教程,花一点时间在他们身上,否则你不会理解它是如何工作的,并且不能使用它。请把你的一些时间和精力投入到这项工作中:-) – BartoszGo 2014-11-10 12:00:41