Month: November 2017

Normalised and Denormalised (aka Denormalized)

Normalised and Denormalised (aka Denormalized)

(Picture from The Illusion of Normal: https://everydayaspergers.com/2012/03/19/day-50-the-illusion-of-normal/)

As always, do please correct me if I’ve got anything wrong.

tl;dr: Normalise = make it look normal = separate fields out into separate “normal” entities like Customer / Address, which then link to one another via foreign keys.

In relational databases: A normalised database is one where every possible entity has its own table, typically with an Id column, which other tables will reference using foreign keys. “Normalisation” refers to the fact that each entity has been separated out into its own table, with the links between entities being upheld via Ids and foreign keys. Each separate piece of data exists only once, and can be accessed by navigating a series of relationships.

For instance you might have Address, Customer, Employee, Invoice, etc. A customer may have a Sales Rep which links to the Employee table via EmployeeId. Meanwhile, the invoice links to the customer via CustomerId, and the customer links to an address via AddressId.

Denormalisation is the process of reducing joins in queries, by adding some redundant and duplicate data to tables. A denormalised database has some duplicated or redundant data. But it means that your queries will have fewer joins. Joins are costly.

Two examples of denormalisation:

1. In the above example, in order to get from Invoice to Sales Rep you have to go via customer, to get the employee Id of the sales rep. Instead, you could duplicate the SalesRepId in the Invoice table.

2. You may want a snapshot of the customer name and address, as they were when the invoice was created (they may have changed since then). If the invoice only accesses name and address via a link to the customer table, you can’t recreate the invoice as it was when it was first sent out. The solution is to copy customer name and address into the Invoice table.

Context:

I worked with relational databases via SQL for many years, but as is often the case with binary terms, I frequently forgot which was which out of “normalised” and “denormalised”, and what exactly they meant.

I’m currently learning about graph databases via Neo4J, and the term “denormalise” came up, and I had to remind myself – yet again – what it meant.

This time though, I wrote it down. Therefore I’m hoping it’ll stick.

 

Projecting Slides on a Mac

Projecting Slides on a Mac

I’ve had a Mac at work for a year now, but I’m still a Windows girl at heart: I’ve only just learnt how to project slides to an external screen from my Mac. It’s useful info, so I’m recording it here.

Unlike Windows (where it’s just Windows key + P), there’s no simple keystroke for this.

Project to an External Display from a Mac:

!! This functionality is only available when you have an external display connected !!

    • Apple icon (top left) | System preferences | Displays (top left, second row down).
    • Click the Arrangement tab (it won’t be there unless you have a cable connecting your laptop to another display).
    • Uncheck Mirror Displays.
      • The good news is that this setting will be remembered, so unless you change it back again (for instance when pairing), it will still be set that way the next time you connect an external display.
    • If you want, arrange the displays so that the extra display is to the left / right of your laptop (to match the actual setup – this can be helpful if you want to drag things between the two screens).
    • This will extend your desktop to two screens, one of which will project to a connected external display, and one of which will be your laptop screen.
    • Then you just make sure your slides are on the projected screen, and your speaker notes are on your laptop.
    • More here: https://support.apple.com/en-gb/HT202351

Display Slides in Presenter View:

Powerpoint:

  • Slide Show | Play from start (or whatever)
  • Hover over the bottom left of the screen while slides are being shown.
  • Click the icon that looks like lines of text on a page
  • Select Use Presenter View

Google Slides:

  • When not in presenter view, there is a Present menu, top right
  • This has a presenter view option – which will open a new tab in the browser with a Speaker Notes header.
  • Click on Speaker Notes, then just separate that browser tab onto your external screen.

Keynote:

  • If you have an external display connected to a Mac, then Keynote will automatically display slides on the external display and show presenter view on your screen (but not necessarily speaker notes – see below).
  • To add speaker notes while editing slides, choose View | Show presenter notes
  • To see speaker notes when presenting (only works when connected to an external display), hover over your screen to see this icon, top right:
    • Screen Shot 2017-11-13 at 12.36.56
  • Click on that icon and it will give you a bewildering array of choices… find the Presenter Notes checkbox, bottom left, and click that. You can also move components around and resize them to look however you want.
  • More here: https://support.apple.com/kb/PH16965?locale=en_GB