PHP ve MySQL karma tablo ile ilgili sorular

4 Cevap php

Ben yeni bir php ve mysql programcı değilim. Ben veri oldukça büyük miktarda taşıma duyuyorum ve gelecekte de bu nedenle ben bir karma tablo kullanıyorum, yavaş yavaş büyüyecek. Ben soru çift var:

  1. Mysql işlevi yerleşik karma bir tablo var mı? Eğer evet ise, bu nasıl kullanılır?

  2. Hash tablo hakkında araştırma yaparak birkaç gün sonra. Ben kısaca karma tablo ne olduğunu biliyorum ama sadece birini oluşturmaya başlamak için nasıl anlayamadık. Ben internet üzerinden karma tablo kodları bir sürü gördüm. Çoğu, ilk adımda bir hashtable sınıf oluşturmak. Anlama geliyor, onlar geçici tablo karma tablo değerini saklamak yerine mysql veritabanına eklemek?

For questions 3,4 & 5, example scenario: User can collect items in the website. I would like to use hash table to insert and retrieve the items that the user collected.

  1. [Önemli] mümkün MySQL veritabanı yapısı gibi görünüyor nelerdir?

    örneğin, öğeleri ve kullanıcılar tablo oluşturun

    , item_id ITEM_NAME ve item_hash_value: öğeleri tablo var

    Kullanıcıların tablo var: User_id, adınızı, ITEM_NAME, item_hash_value

    Ben kullanıcıların tablo doğru olup olmadığından emin değilim?

  2. [Important] What are the steps of creating hash table in php and mysql? (If there is any sample code would be great :))

  3. [Önemli] Nasıl hash tabloya veri eklemek ve almak için? "... Eğer blabla * from mysql sorgu yani SEÇİN kullanabilirsiniz:" Ben php ve mysql bahsediyorum, bu yüzden cevapları gibi olabilir umut

Note: [Important] = urgent questions, need the answers.

Teşekkür benim soruları yanıtlamak için gelişmiş. Sizi yardıma ihtiyacım var!

4 Cevap

(Italik üzgünüm, alt bunları tetikleyebilir ama ben bir paragrafın ortasında bu devre dışı bırakmak için iyi bir yol bulamıyorum. Italik Yoksay, ben onları oraya koymak istemedim)

MySQL ile bir hashtable kullanma hakkında endişelenmenize gerek yoktur. Eğer onlara faaliyet sırasında bellekte öğeleri çok sayıda niyetinde olmadığını bir hashtable basit bir liste daha işler çok daha hızlı bulabilirsiniz beri kullanmak için iyi bir veri yapısıdır.

Ama veritabanı düzeyinde, sen hashtable hakkında endişelenmenize gerek yoktur. Iyi tutun ve erişim kayıtlarını nasıl sergiyi yüzden sürece bunu mutlu olacak, doğru bilgi vermek gibi, MySQL iştir.

Database Structure

items table would be: item_id, item_name
Primary key is item_id

users table would be: user_id, username
Primary key is user_id

user_items table would be: user_id, item_id
Primary key is the combination of user_id and item_id
Index on item_id

Her madde bir (ve tek) ürün tablosunda girdi alır. Her kullanıcı bir (ve tek) kullanıcıların tabloda girdi alır. Bir kullanıcı bir öğeyi seçtiğinde, kullanıcı öğeleri tablosunda gider. Örnek:

Users:

1 | Bob
2 | Alice
3 | Robert

Items

1 | Headphones
2 | Computer
3 | Beanie Baby

Bob kulaklık seçti ve Robert bilgisayar ve bere bebek seçtiyse Yani, user_items tablo şöyle olacaktır:

User_items (user_id, item_id)

1 | 1    (This shows Bob (user 1) selected headphones (item 1))
3 | 2    (This shows Robert (user 3) selected a computer (item 2))
3 | 3    (This shows Robert (user 3) selected a beanie baby (item 3))

Kullanıcıların ve öğeleri masalarda User_id ve item_id birincil anahtarlar olduğundan, MySQL sadece HashMap gibi, onları çok hızlı erişim sağlayacak. Sahip user_items masaya User_id ve birincil anahtarında item_id hem size çiftleri olmaz ve hızlı erişim (item_id incitmez üzerinde bir indeks) almak gerekir demektir.

Example Queries

Bu kurulum ile, bilmek istediğinizi bulmak gerçekten çok kolay. İşte bazı örnekler:

Kim madde 2 seçti?

SELECT users.user_id, users.user_name FROM users, user_items
WHERE users.user_id = user_items.user_id AND user_items.item_id = 2

Robert kaç şey seçti?

SELECT COUNT(user_items.item_id) FROM user_items, users
WHERE users.user_id = user_items.user_id AND users.user_name = 'Robert'

Her kullanıcı bir listesini istiyorum ve onlar seçilmiş oldum ne, kullanıcı adına göre sıralı

SELECT user.user_name, item.item_name FROM users, items, user_items
WHERE users.user_id = user_items.user_id AND items.item_id = user_items.item_id
ORDER BY user_name, item_name

Böyle W3C's tutorial gibi internet üzerinde SQL birçok kılavuzları vardır.

1) Hashtables do exist in MySQL but are used to keep internal track of keys on tables. 2) Hashtables work by hashing a data cell to create a number of different keys that separate the data by these keys making it easier to search through. The hashtable is used to find what the key is that should be used to bring up the correct list to search through.

Örneğin, bir satır, 100 öğeleri arama, 100 ürün yok 10 saniye sürer. Eğer onlar öğe türüne göre ayrılmış ve t-shirt, saatlerin 25 maddeden, saatler öğeler satır ve ayakkabı ürün satır 25 öğe bölmek olabilir biliyorsanız. Bir t-shirt bulmalıyız o zaman, sadece daha sonra 2.5 saniye sürer t-shirt 25 öğeler yoluyla aramak zorunda olabilir.

3) Not sure what your question means, a MySQL database is a binary file that contains all the rows in the database. 4) As in #2 you would need to decide what you want your key to be. 5) #2 you need to know what your key is.

Eğer bir karma tablo verilerinizi depolamak için doğru yol olduğunu düşünüyorsanız, CouchDB yerine MySQL gibi bir anahtar-değer veritabanı kullanmak isteyebilirsiniz. Onlar nasıl get started PHP ile size göstereceğim.

Ben yeni bir php ve mysql programcı değilim. Ben veri oldukça büyük miktarda taşıma duyuyorum ve gelecekte de bu nedenle ben bir karma tablo kullanıyorum, yavaş yavaş büyüyecek.

orijinal amaç bakıyorsun, "memcache" bunun yerine, en ölçeklenebilir çözüm ederken, kodunuzda minimal değişiklikler sunuyor veri daha büyük ve daha büyük gitmek gibi memcache sunucularını ölçeklenebilir kullanmak.