2014-09-18 2 views
0

Так что я этот XML-файл:Как организовать базу данных MySQL для хранения данных Этого XML

<menu> 

<!-- Drinks --> 
<category name="Drinks"> 
    <item name="Coke"> 
     <type desc="0,5L" price="1"/> 
     <type desc="1,0L" price="2"/> 
    </item> 
    <item name="Pepsi"> 
     <type desc="0,5L" price="1"/> 
     <type desc="1,0L" price="2"/> 
    </item> 
    <item name="Mountain Dew"> 
     <type desc="1,0L" price="2"/> 
    </item> 
</category> 

<!-- Pizza --> 
<category name="Pizza" details="Small (6 slices) - Medium (8 slices) - Large (10 slices) - XXL (12 slices)"> 

    <item name="Spicy Samba" details="Carioca sauce, Italian style sausage, ham, onions, fresh tomatoes and Italian style three-cheese blend"> 
     <type desc="Large Original" price="15"/> 
     <type desc="Large Stuffed" price="17"/> 
     <type desc="Large Thin" price="16"/> 
    </item> 

    <item name="Sausage and Pepperoni"> 
     <type desc="Large Original" price="15"/> 
     <type desc="Large Stuffed" price="17"/> 
     <type desc="Large Thin" price="16"/> 
    </item> 

</category> 


<!-- Chicken --> 
<category name="Chicken"> 

    <item name="Piri Piri Chicken Wings (6)"><type price="5.5"/></item> 
    <item name="Plain Roasted Chicken Wings (6)"><type price="4.5"/></item> 

</category> 

</menu> 

И я хотел бы сделать базу данных MySQL для хранения этих данных.

Сначала я рассмотрел одну большую таблицу со следующими столбцами: RestaurantID, CategoryName, CategoryDetails, ITEMNAME, ItemDetails, Тип, Цена

Но, конечно же, вставляя один маленький Кокс требует много повторения предыдущего поля.

Я тогда думал об отделении моих таблиц в: Категориях, предметы и тип, каждый из ссылок обратно к предыдущему с помощью внешнего ключа (просто Автоинкрементное целое ID)

Но тогда, это становится действительно сложно отслеживать все эти идентификаторы. В будущем я намерен сделать простое приложение, чтобы сделать создание этих данных намного проще, но прежде чем я это сделаю, я хочу, чтобы мои таблицы были прочными.

Каков наилучший способ?

ответ

1

Я бы предложил создать категории, элементы, типы и цены. Я подозреваю, что у вас будет много повторяющихся типов, но с разной ценой. Таким образом, таблица типов может иметь TypeID, TypeDescription, а таблица цен будет иметь ItemID, TypeID, Price, с составным ключом (ItemID, TypeID).

Что касается данных, которые легко читать, их не будет - в необработанном виде. Но это довольно часто, когда у вас нормализованные данные с любой степенью сложности. Для этого у нас есть вопросы. Написание запроса для чтения ваших данных было бы довольно простым:

SELECT c.CategoryName 
    , c.CategoryDetails 
    , i.ItemName 
    , i.ItemDetails 
    , t.TypeDescription 
    , p.Price 
    FROM categories c 
    JOIN items  i ON c.CategoryID = i.CategoryID 
    JOIN prices  p ON i.ItemID = p.ItemID 
    JOIN types  t ON p.TypeID = t.TypeID; 
Смежные вопросы