- One of the values within a tuple. More commonly called a "column" or "field".
- When we tell the database to enforce a rule on a field or a row in a table. A common constraint is to insist that there can be no duplicate values in a particular field (i.e., all the values must be unique).
- A cursor allows you to execute SQL commands in a database and retrieve data from the database. A cursor is similar to a socket or file handle for network connections and files, respectively.
- database browser
- A piece of software that allows you to directly connect to a database and manipulate the database directly without writing a program.
- foreign key
- A numeric key that points to the primary key of a row in another table. Foreign keys establish relationships between rows stored in different tables.
- Additional data that the database software maintains as rows and inserts into a table to make lookups very fast.
- logical key
- A key that the "outside world" uses to look up a particular row. For example in a table of user accounts, a person's email address might be a good candidate as the logical key for the user's data.
- Designing a data model so that no data is replicated. We store each item of data at one place in the database and reference it elsewhere using a foreign key.
- primary key
- A numeric key assigned to each row that is used to refer to one row in a table from another table. Often the database is configured to automatically assign primary keys as rows are inserted.
- An area within a database that contains tuples and attributes. More typically called a "table".
- A single entry in a database table that is a set of attributes. More typically called "row".
SQLite actually does allow some flexibility in the type of data stored in a column, but we will keep our data types strict in this chapter so the concepts apply equally to other database systems such as MySQL.↩
In general, when a sentence starts with "if all goes well" you will find that the code needs to use try/except.↩
If you find a mistake in this book, feel free to send me a fix using Github.