如果我有5个餐厅和5个菜单。在规范化数据库中表示此数据的最佳方法是什么。
答案 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();