0

私は次のようなことを考えています...

Table Pants (20 entrees)  
| ID | Item | Description | Price   

Table Shirts (20 entrees)   
| ID | Item | Description | Price   

Table Socks (5 entrees)    
| ID | Item | Description | Price  

次に、$tableでphpforeach IDを実行して、ページにリストを追加します。

一部のテーブルには多くのプリモピアットがない可能性があるため、これはこれを行うための効率的な方法でしょうか?または、すべてのエントリを1つのテーブルに入れて、さまざまなカテゴリのフィールドを追加し、新しいフィールドを介してページにデータを入力する別の方法を見つける必要がありますか?それとももっと良いアイデアですか?

御時間ありがとうございます。

4

4 に答える 4

1

モデルは柔軟ではなく、効率的でもありません。2番目の解決策は、itemsという名前のテーブルを作成し、外部キーである必要があるcategoriesという名前のフィールドを追加することです。このhttp://sqlfiddle.com/#!2/74c91/1を確認できます。ここで必要なのは、データベースの作成に必要なコードだけです。

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET NAMES utf8 */;
/*!40014 SET FOREIGN_KEY_CHECKS=0 */;

-- Dumping structure for table database.categories
CREATE TABLE IF NOT EXISTS `categories` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `created` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- Dumping data for table database.categories: ~0 rows (approximately)
/*!40000 ALTER TABLE `categories` DISABLE KEYS */;
INSERT INTO `categories` (`id`, `name`, `created`) VALUES
    (1, 'Pants ', '2012-12-15 11:37:27'),
    (2, 'Shirts ', '2012-12-15 11:37:36'),
    (3, 'Socks ', '2012-12-15 10:38:47');
/*!40000 ALTER TABLE `categories` ENABLE KEYS */;


-- Dumping structure for table database.clothes
CREATE TABLE IF NOT EXISTS `clothes` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `item` varchar(255) NOT NULL,
  `description` text,
  `category_id` int(10) NOT NULL,
  `created` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `category_id` (`category_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- Dumping data for table database.clothes: ~0 rows (approximately)
/*!40000 ALTER TABLE `clothes` DISABLE KEYS */;
INSERT INTO `clothes` (`id`, `item`, `description`, `category_id`, `created`) VALUES
    (1, 'red socks', 'Red Socks Rocks', 3, '2012-12-15 10:39:06'),
    (2, 'blue socks', 'nice socks too', 3, '2012-12-15 10:39:18'),
    (3, 'grey pants', 'pretty cool', 1, '2012-12-15 10:40:34'),
    (4, 'Blue Shirt', 'Nice blue shirt', 2, '2012-12-15 10:40:10');
/*!40000 ALTER TABLE `clothes` ENABLE KEYS */;
/*!40014 SET FOREIGN_KEY_CHECKS=1 */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

そして、ここにあなたのデータを取得するためのコードがあります:

    SELECT 
clothes.id AS clotheId, 
clothes.item AS clotheItem, 
clothes.description AS clotheDescription, 
categories.id AS categoryId, 
categories.name AS categoryName 
FROM clothes 
LEFT JOIN categories 
ON clothes.category_id=categories.id;
于 2012-12-15T15:28:06.133 に答える
0

私は後者と一緒に行きます。

 ID | Item | Description | Price | Type

次に、次のようなクエリを使用します。

SELECT * FROM items WHERE type='$type'
于 2012-12-15T15:22:38.707 に答える
0

このデータを別のテーブルに保存することはありません。1つのテーブルを作成し、それがアイテムのタイプに関するインジケーターを含めます。

これに似ています:

create table ClothingItems
(
  id,
  typeid,
  item,
  description,
  price
);

create table clothingType
(
  typeid,
  name
);

次に、クエリを実行するには、次を使用できます。

select *
from clothingitems i
left join clothingType t
  on t.typeid = t.typeid
where t.name = 'socks'
于 2012-12-15T15:24:18.663 に答える
0

さて、今のところそれほど多くのプリモピアットがないかもしれません。しかし、おそらく将来的には?隅に身を置いてはいけません:)。

自問してみてください。-記事は複数のカテゴリに属する​​ことができますか?

いいえの場合、少なくとも2つのテーブル(1対多の関係)を作成する必要があります。

カテゴリ

id | title | description|..。

記事

id | category_id | title | price|..。

はいの場合、少なくとも3つのテーブル(多対多の関係)を作成する必要があります。

カテゴリ

id | title | description|..。

記事

id | category_id | title | price|..。

articles_categories

article_id | category_id

幸運を祈ります:)

于 2012-12-15T15:29:24.893 に答える