你如何在数据库中存储餐馆的菜单?

时间:2016-01-17 19:28:08

标签: database

如果我有5个餐厅和5个菜单。在规范化数据库中表示此数据的最佳方法是什么。

1 个答案:

答案 0 :(得分:4)

首先,由于您正在与不同的餐馆合作,因此您需要一个restaurant id | name | adress | phone_number | etc 表。它必须包含的内容:

menu

然后,对于5个不同的菜单,您需要这个menu id | restaurant_id 表:

item

id | item_name | item_price

您还需要一个表项:

menu_items

menu_id | item_id

现在你需要一个表来建立所有这些之间的关系:

menu_items

这是标准化的,因为关联它们的表是restaurant.id and menu.restaurant_id menu_items.restaurant_id and restaurants.id menu_items.menu_id and menu.id menu_items.item_id and item.id 。你如何对待它们只是编程逻辑。

对于约束,您需要在它们之间建立外键关系:

<?php
require_once __DIR__.'/../vendor/autoload.php';
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\ParameterBag;
use Silex\ControllerProviderInterface;

$app = new Silex\Application();

 $app['debug'] = true;
 $app->register(new Silex\Provider\DoctrineServiceProvider(), array(
'db.options' => array(
    'driver'    => 'pdo_mysql',
    'host'      => 'localhost',
    'dbname'    => 'testapp',
    'user'      => 'root',
    'password'  => 'turoke55u',
    ),
));
$app->before(function (Request $request) {
    if (0 === strpos($request->headers->get('Content-Type'), 'application/json')) {
        $data = json_decode($request->getContent(), true);
        $request->request->replace(is_array($data) ? $data : array());
    }
});
$app->mount('/', include 'login.php');
$app->run();