Also note that you probably want your application to store the password as a 
salted-hash, and not as a plain-text password.  Otherwise someone could look up 
the passwords with a text editor ...

---
The fact that there's a Highway to Hell but only a Stairway to Heaven says a 
lot about anticipated traffic volume.


>-----Original Message-----
>From: sqlite-users [mailto:sqlite-users-
>boun...@mailinglists.sqlite.org] On Behalf Of Simon Slavin
>Sent: Sunday, 17 June, 2018 11:30
>To: SQLite mailing list
>Subject: Re: [sqlite] Criteria to define two fields as Primary Key or
>Unique
>
>On 17 Jun 2018, at 5:55pm, Markos <mar...@c2o.pro.br> wrote:
>
>> I want to avoid two administrators (admin_user) with the same login
>but for this I am in doubt if I put the two fields as primary key or
>as unique:
>
>Your ideas both have different advantages, but are not the normal way
>to do things.  Try this instead:
>
>CREATE TABLE user (
>       id INTEGER PRIMARY KEY,
>       login text COLLATE NOCASE NOT NULL UNIQUE,
>       password text NOT NULL,
>       admin INTEGER DEFAULT 0,
>       admin_registration_date INTEGER NOT NULL);
>
>The idea is that you have just one account table.  In that you have
>everyone, whether they're superadmin, admin or mundane users.  You
>just have a field saying what kind of account the row represents.
>The 'UNIQUE' keyword for the 'login' field has SQLite create its own
>private index so it can check for uniqueness, and if in other places
>it needs to look up a login name it will use that index.
>
>In the above I have just two values for the admin field.  users are
>'0' admins are '1' (which SQLite interprets as meaning TRUE).
>
>But you seem to have a superadmin status (presumably you).  So you
>might prefer '0' for superadmin, '1' for admin, '2' for normal users.
>Or some other system that suits you.  Maybe even store the words
>'user', 'admin', 'superadmin'.
>
>The use of the 'id' field as INTEGER PRIMARY KEY is a fundamental
>part of the way SQL tables are often used.  Every row has an INTEGER
>key, assigned by the SQL engine (you don't set it yourself,
>automatically incrementing values are set for you).  You never change
>those values.  And when you need to refer to that entry in other
>tables (e.g. a foreign key) you use the correct 'id' value, not
>someone's login name.
>
>See FAQ number 1 in
>
><https://sqlite.org/faq.html#q1>
>
>Simon.
>_______________________________________________
>sqlite-users mailing list
>sqlite-users@mailinglists.sqlite.org
>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users



_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to