I am a new php and mysql programmer. I am handling quite large amount of data, and in future it will grow slowly, thus I am using hash table. I have couple of questions:
-
Does mysql have hash table built in function? If yes, how to use that?
-
After couple of days doing research about hash table. I briefly know what hash table is but I just could not understand how to start creating one. I saw a lot of hash table codes over the internet. Most of them, in the first step in to create a hashtable class. Does it mean, they store the hash table value in the temporary table instead of insert into mysql database?
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.
-
[Important] What are the possible mysql database structure looks like?
e.g, create items and users table
in items table have: item_id, item_name, and item_hash_value
in users table have: user_id, username, item_name, item_hash_value
I am not sure if the users table is correct?
-
[Important] What are the steps of creating hash table in php and mysql? (If there is any sample code would be great :))
-
[Important] How to insert and retrieve data from hash table? I am talking about php and mysql, so I hope the answers can be like: ‘you can use mysql query i.e SELECT * from blabla…’
(sorry about the italics, underscores can trigger them but I can’t find a good way to disable that in the middle of a paragraph. Ignore the italics, I didn’t mean to put them there)
You don’t need to worry about using a hashtable with MySQL. If you intend to have a large number of items in memory while you operate on them a hashtable is a good data structure to use since it can find things much faster than a simple list.
But at the database level, you don’t need to worry about the hashtable. Figuring out how to best hold and access records is MySQL’s job, so as long as you give it the correct information it will be happy.
Database Structure
Each item gets one (and only one) entry in the items table. Each user gets one (and only one) entry in the users table. When a user selects an item, it goes in the user items table. Example:
So if Bob has selected the headphones and Robert has selected the computer and beanie baby, the user_items table would look like this:
Since the user_id and item_id on the users and items tables are primary keys, MySQL will let you access them very fast, just like a hashmap. On the user_items table having both the user_id and item_id in the primary key means you won’t have duplicates and you should be able to get fast access (an index on item_id wouldn’t hurt).
Example Queries
With this setup, it’s really easy to find out what you want to know. Here are some examples:
Who has selected item 2?
How many things has Robert selected?
I want a list of each user and what they’ve selected, ordered by the user name
There are many guides to SQL on the internet, such as the W3C’s tutorial.